From a25ffcf947d9237b6f9f51eea3f757a55c69b79a Mon Sep 17 00:00:00 2001 From: abyt101 Date: Sat, 22 Jun 2024 09:49:17 +0000 Subject: [PATCH 1/5] kafka service update --- app/services/kafka_service.py | 29 ++++++++++++++++++----------- requirements.txt | 3 ++- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/app/services/kafka_service.py b/app/services/kafka_service.py index 661b2d7..31ff063 100644 --- a/app/services/kafka_service.py +++ b/app/services/kafka_service.py @@ -1,8 +1,10 @@ -from confluent_kafka import Producer, Consumer, KafkaException +import logging +from confluent_kafka import Producer, Consumer, KafkaException, KafkaError import json class KafkaService: def __init__(self, brokers): + self.brokers = brokers self.producer = Producer({'bootstrap.servers': brokers}) self.consumer = Consumer({ 'bootstrap.servers': brokers, @@ -16,15 +18,20 @@ def produce(self, topic, message): def consume(self, topic, callback): self.consumer.subscribe([topic]) - while True: - msg = self.consumer.poll(timeout=1.0) - if msg is None: - continue - if msg.error(): - if msg.error().code() == KafkaError._PARTITION_EOF: + try: + while True: + msg = self.consumer.poll(timeout=1.0) + if msg is None: continue - else: - raise KafkaException(msg.error()) - callback(json.loads(msg.value())) + if msg.error(): + if msg.error().code() == KafkaError._PARTITION_EOF: + continue + else: + raise KafkaException(msg.error()) + callback(json.loads(msg.value())) + except Exception as e: + logging.error(f"Error in Kafka consumer: {str(e)}") + finally: + self.consumer.close() -kafka_service = KafkaService(brokers='localhost:9092') +kafka_service = KafkaService(brokers='localhost:9092') \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 86a0ed4..23e5266 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,5 @@ Flask-Bcrypt psycopg2-binary confluent-kafka apache-airflow -mlflow \ No newline at end of file +mlflow +psycopg2 \ No newline at end of file From 1f329715ca3fb176fe9ca45f0e30196d5d4fb629 Mon Sep 17 00:00:00 2001 From: abyt101 Date: Sat, 22 Jun 2024 10:44:14 +0000 Subject: [PATCH 2/5] Kafaka service integrated --- app/__init__.py | 21 +++++++++++++++++ app/routes/backtest.py | 15 +++---------- app/services/kafka_service.py | 27 +++++++++++++++++++++- tests/unit/test_backtest_service.py | 35 +++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 13 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index 872a2a1..b9c68ee 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -2,11 +2,15 @@ from flask_sqlalchemy import SQLAlchemy from flask_jwt_extended import JWTManager from flask_bcrypt import Bcrypt +import threading db = SQLAlchemy() jwt = JWTManager() bcrypt = Bcrypt() +from app.services.backtest_service import run_backtest_by_id +from app.services.kafka_service import kafka_service + def create_app(): app = Flask(__name__) app.config.from_object('app.config.Config') @@ -23,3 +27,20 @@ def create_app(): db.create_all() return app + +def consume_backtest_scenes(app): + def callback(message): + with app.app_context(): + backtest_id = message.get('backtest_id') + run_backtest_by_id(backtest_id) + + kafka_service.consume('backtest_scenes', callback) + +# Start consuming Kafka messages in a separate thread +def start_consumer_thread(app): + consumer_thread = threading.Thread(target=consume_backtest_scenes, args=(app,)) + consumer_thread.daemon = True # Allow the thread to be killed when the main program exits + consumer_thread.start() + +app = create_app() +start_consumer_thread(app) diff --git a/app/routes/backtest.py b/app/routes/backtest.py index 2ff5b70..3339840 100644 --- a/app/routes/backtest.py +++ b/app/routes/backtest.py @@ -1,5 +1,6 @@ -from flask import Blueprint, request, jsonify -from app.models.backtest import Backtest, Parameter, Result +import threading +from flask import Blueprint, request, jsonify, current_app +from app.models.backtest import Backtest, Parameter from app import db from flask_jwt_extended import jwt_required from app.services.backtest_service import run_backtest_by_id @@ -7,7 +8,6 @@ bp = Blueprint('backtest', __name__) - @bp.route('/backtest', methods=['POST']) @jwt_required() def run_backtest(): @@ -44,12 +44,3 @@ def run_backtest(): return jsonify({"msg": "Backtest created and published to Kafka", "backtest_id": new_backtest.id}), 201 -def consume_backtest_scenes(): - def callback(message): - backtest_id = message.get('backtest_id') - run_backtest_by_id(backtest_id) - - kafka_service.consume('backtest_scenes', callback) - - -consume_backtest_scenes() # Start consuming Kafka messages in a separate thread diff --git a/app/services/kafka_service.py b/app/services/kafka_service.py index 31ff063..65020f5 100644 --- a/app/services/kafka_service.py +++ b/app/services/kafka_service.py @@ -1,4 +1,5 @@ import logging +from confluent_kafka.admin import AdminClient, NewTopic from confluent_kafka import Producer, Consumer, KafkaException, KafkaError import json @@ -11,27 +12,51 @@ def __init__(self, brokers): 'group.id': 'backtest_group', 'auto.offset.reset': 'earliest' }) + self.admin_client = AdminClient({'bootstrap.servers': brokers}) + + def create_topic(self, topic): + topic_metadata = self.admin_client.list_topics(timeout=10) + if topic not in topic_metadata.topics: + logging.info(f"Creating topic {topic}") + new_topic = NewTopic(topic, num_partitions=1, replication_factor=1) + fs = self.admin_client.create_topics([new_topic]) + for topic, f in fs.items(): + try: + f.result() # The result itself is None + logging.info(f"Topic {topic} created successfully") + except Exception as e: + logging.error(f"Failed to create topic {topic}: {str(e)}") + else: + logging.info(f"Topic {topic} already exists") def produce(self, topic, message): + logging.info(f"Producing message to topic {topic}: {message}") self.producer.produce(topic, key=None, value=json.dumps(message)) self.producer.flush() + logging.info("Message produced successfully") def consume(self, topic, callback): + self.create_topic(topic) self.consumer.subscribe([topic]) + logging.info(f"Subscribed to topic {topic}") try: while True: msg = self.consumer.poll(timeout=1.0) if msg is None: + logging.debug("No message received") continue if msg.error(): if msg.error().code() == KafkaError._PARTITION_EOF: + logging.info("End of partition reached") continue else: + logging.error(f"Consumer error: {msg.error()}") raise KafkaException(msg.error()) + logging.info(f"Received message: {msg.value()}") callback(json.loads(msg.value())) except Exception as e: logging.error(f"Error in Kafka consumer: {str(e)}") finally: self.consumer.close() -kafka_service = KafkaService(brokers='localhost:9092') \ No newline at end of file +kafka_service = KafkaService(brokers='localhost:9092') diff --git a/tests/unit/test_backtest_service.py b/tests/unit/test_backtest_service.py index e69de29..346820d 100644 --- a/tests/unit/test_backtest_service.py +++ b/tests/unit/test_backtest_service.py @@ -0,0 +1,35 @@ +import json +import pytest +from flask import Flask +from flask_testing import TestCase +from app import create_app, db +from app.models.backtest import Indicator, Backtest, Parameter, Result + +class BacktestTestCase(TestCase): + def create_app(self): + app = create_app('testing') # Assume you have a testing config + return app + + def setUp(self): + db.create_all() + # Add sample indicators + indicator1 = Indicator(name='Indicator 1', description='Description 1') + indicator2 = Indicator(name='Indicator 2', description='Description 2') + db.session.add(indicator1) + db.session.add(indicator2) + db.session.commit() + + def tearDown(self): + db.session.remove() + db.drop_all() + + def test_run_backtest(self): + with open('backtest_request.json') as f: + data = json.load(f) + + response = self.client.post('/backtest', json=data) + self.assertEqual(response.status_code, 201) + self.assertIn('backtest_id', response.json) + +if __name__ == '__main__': + pytest.main() From c7b3224f74155ef7518c5a7c64e2e683f16a3174 Mon Sep 17 00:00:00 2001 From: abyt101 Date: Sat, 22 Jun 2024 11:06:54 +0000 Subject: [PATCH 3/5] mlflow service intgrated with the backend --- app/services/backtest_service.py | 3 ++- app/services/kafka_service.py | 9 ++++++++- app/services/mlflow_service.py | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/services/backtest_service.py b/app/services/backtest_service.py index 4288aea..c4b7a76 100644 --- a/app/services/backtest_service.py +++ b/app/services/backtest_service.py @@ -7,7 +7,8 @@ def run_backtest_by_id(backtest_id): backtest = Backtest.query.get(backtest_id) if not backtest: return - + + # Simulate backtest processing result = Result( backtest_id=backtest_id, diff --git a/app/services/kafka_service.py b/app/services/kafka_service.py index 65020f5..2caff49 100644 --- a/app/services/kafka_service.py +++ b/app/services/kafka_service.py @@ -2,6 +2,7 @@ from confluent_kafka.admin import AdminClient, NewTopic from confluent_kafka import Producer, Consumer, KafkaException, KafkaError import json +from decimal import Decimal class KafkaService: def __init__(self, brokers): @@ -29,9 +30,15 @@ def create_topic(self, topic): else: logging.info(f"Topic {topic} already exists") + def json_serializer(self, obj): + if isinstance(obj, Decimal): + return float(obj) + raise TypeError("Type not serializable") + def produce(self, topic, message): logging.info(f"Producing message to topic {topic}: {message}") - self.producer.produce(topic, key=None, value=json.dumps(message)) + serialized_message = json.dumps(message, default=self.json_serializer) + self.producer.produce(topic, key=None, value=serialized_message) self.producer.flush() logging.info("Message produced successfully") diff --git a/app/services/mlflow_service.py b/app/services/mlflow_service.py index c36088a..ed1d7fb 100644 --- a/app/services/mlflow_service.py +++ b/app/services/mlflow_service.py @@ -10,4 +10,4 @@ def log_metrics(self, run_name, metrics): for key, value in metrics.items(): mlflow.log_metric(key, value) -mlflow_service = MLflowService(tracking_uri='http://localhost:5000') +mlflow_service = MLflowService(tracking_uri='http://localhost:5050') From 6601d4d441238e86732a1a760bf5cf353db68554 Mon Sep 17 00:00:00 2001 From: abyt101 Date: Sat, 22 Jun 2024 12:55:13 +0000 Subject: [PATCH 4/5] Backtesting strategies modified --- .gitignore | 2 + app/config.py | 2 +- notebooks/backtesting.ipynb | 8961 ++++++++++++++++++++++++++ notebooks/backtesting_yfinance.ipynb | 420 ++ notebooks/data_exploration.ipynb | 501 ++ requirements.txt | 12 +- scripts/backtest_runner.py | 169 + scripts/data_ingestion.py | 47 + 8 files changed, 10112 insertions(+), 2 deletions(-) create mode 100644 notebooks/backtesting_yfinance.ipynb diff --git a/.gitignore b/.gitignore index 82f9275..215d2c5 100644 --- a/.gitignore +++ b/.gitignore @@ -129,6 +129,8 @@ venv/ ENV/ env.bak/ venv.bak/ +Genv/ + # Spyder project settings .spyderproject diff --git a/app/config.py b/app/config.py index f91c16a..864cb2a 100644 --- a/app/config.py +++ b/app/config.py @@ -1,4 +1,4 @@ class Config: - SQLALCHEMY_DATABASE_URI = 'postgresql://test_user:password@localhost/test_db' + SQLALCHEMY_DATABASE_URI = '' SQLALCHEMY_TRACK_MODIFICATIONS = False JWT_SECRET_KEY = 'your_secret_key' diff --git a/notebooks/backtesting.ipynb b/notebooks/backtesting.ipynb index e69de29..cea2dbc 100644 --- a/notebooks/backtesting.ipynb +++ b/notebooks/backtesting.ipynb @@ -0,0 +1,8961 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import (absolute_import, division, print_function, unicode_literals)\n", + "import datetime\n", + "import os\n", + "import sys\n", + "import backtrader as bt\n", + "import ccxt\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Initialize Binance API\n", + "binance = ccxt.binance()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fetching Data from Binance" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "def fetch_ohlcv(symbol, timeframe, since=None, limit=1000):\n", + " ohlcv = binance.fetch_ohlcv(symbol, timeframe, since=since, limit=limit)\n", + " return ohlcv\n", + "\n", + "def ohlcv_to_dataframe(ohlcv):\n", + " df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])\n", + " df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')\n", + " return df\n", + "\n", + "def fetch_data_for_period(symbol, timeframe, start_date, end_date, limit=1000):\n", + " all_data = []\n", + " since = binance.parse8601(start_date)\n", + " end_time = binance.parse8601(end_date)\n", + " while since < end_time:\n", + " ohlcv = fetch_ohlcv(symbol, timeframe, since, limit)\n", + " if not ohlcv:\n", + " break\n", + " all_data.extend(ohlcv)\n", + " since = ohlcv[-1][0] # Set since to the last timestamp fetched\n", + " since += 1 # Move to the next millisecond to avoid duplication\n", + " return all_data\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Converting Data to DataFrame and Saving as CSV" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "ename": "OSError", + "evalue": "Cannot save file into a non-existent directory: '..\\data'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mOSError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[15], line 11\u001b[0m\n\u001b[0;32m 9\u001b[0m \u001b[38;5;66;03m# Save data to CSV\u001b[39;00m\n\u001b[0;32m 10\u001b[0m csv_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m../data/binance_btc_usdt_6months.csv\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m---> 11\u001b[0m \u001b[43mdf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_csv\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcsv_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\pandas\\util\\_decorators.py:333\u001b[0m, in \u001b[0;36mdeprecate_nonkeyword_arguments..decorate..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 327\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m num_allow_args:\n\u001b[0;32m 328\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[0;32m 329\u001b[0m msg\u001b[38;5;241m.\u001b[39mformat(arguments\u001b[38;5;241m=\u001b[39m_format_argument_list(allow_args)),\n\u001b[0;32m 330\u001b[0m \u001b[38;5;167;01mFutureWarning\u001b[39;00m,\n\u001b[0;32m 331\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39mfind_stack_level(),\n\u001b[0;32m 332\u001b[0m )\n\u001b[1;32m--> 333\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\pandas\\core\\generic.py:3967\u001b[0m, in \u001b[0;36mNDFrame.to_csv\u001b[1;34m(self, path_or_buf, sep, na_rep, float_format, columns, header, index, index_label, mode, encoding, compression, quoting, quotechar, lineterminator, chunksize, date_format, doublequote, escapechar, decimal, errors, storage_options)\u001b[0m\n\u001b[0;32m 3956\u001b[0m df \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28mself\u001b[39m, ABCDataFrame) \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mto_frame()\n\u001b[0;32m 3958\u001b[0m formatter \u001b[38;5;241m=\u001b[39m DataFrameFormatter(\n\u001b[0;32m 3959\u001b[0m frame\u001b[38;5;241m=\u001b[39mdf,\n\u001b[0;32m 3960\u001b[0m header\u001b[38;5;241m=\u001b[39mheader,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 3964\u001b[0m decimal\u001b[38;5;241m=\u001b[39mdecimal,\n\u001b[0;32m 3965\u001b[0m )\n\u001b[1;32m-> 3967\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mDataFrameRenderer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mformatter\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_csv\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 3968\u001b[0m \u001b[43m \u001b[49m\u001b[43mpath_or_buf\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3969\u001b[0m \u001b[43m \u001b[49m\u001b[43mlineterminator\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlineterminator\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3970\u001b[0m \u001b[43m \u001b[49m\u001b[43msep\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msep\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3971\u001b[0m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3972\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43merrors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3973\u001b[0m \u001b[43m \u001b[49m\u001b[43mcompression\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcompression\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3974\u001b[0m \u001b[43m \u001b[49m\u001b[43mquoting\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mquoting\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3975\u001b[0m \u001b[43m \u001b[49m\u001b[43mcolumns\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcolumns\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3976\u001b[0m \u001b[43m \u001b[49m\u001b[43mindex_label\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mindex_label\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3977\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3978\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunksize\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunksize\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3979\u001b[0m \u001b[43m \u001b[49m\u001b[43mquotechar\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mquotechar\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3980\u001b[0m \u001b[43m \u001b[49m\u001b[43mdate_format\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdate_format\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3981\u001b[0m \u001b[43m \u001b[49m\u001b[43mdoublequote\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdoublequote\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3982\u001b[0m \u001b[43m \u001b[49m\u001b[43mescapechar\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mescapechar\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3983\u001b[0m \u001b[43m \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstorage_options\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 3984\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\pandas\\io\\formats\\format.py:1014\u001b[0m, in \u001b[0;36mDataFrameRenderer.to_csv\u001b[1;34m(self, path_or_buf, encoding, sep, columns, index_label, mode, compression, quoting, quotechar, lineterminator, chunksize, date_format, doublequote, escapechar, errors, storage_options)\u001b[0m\n\u001b[0;32m 993\u001b[0m created_buffer \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 995\u001b[0m csv_formatter \u001b[38;5;241m=\u001b[39m CSVFormatter(\n\u001b[0;32m 996\u001b[0m path_or_buf\u001b[38;5;241m=\u001b[39mpath_or_buf,\n\u001b[0;32m 997\u001b[0m lineterminator\u001b[38;5;241m=\u001b[39mlineterminator,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1012\u001b[0m formatter\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt,\n\u001b[0;32m 1013\u001b[0m )\n\u001b[1;32m-> 1014\u001b[0m \u001b[43mcsv_formatter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msave\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1016\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m created_buffer:\n\u001b[0;32m 1017\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(path_or_buf, StringIO)\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\pandas\\io\\formats\\csvs.py:251\u001b[0m, in \u001b[0;36mCSVFormatter.save\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 247\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 248\u001b[0m \u001b[38;5;124;03mCreate the writer & save.\u001b[39;00m\n\u001b[0;32m 249\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 250\u001b[0m \u001b[38;5;66;03m# apply compression and byte/text conversion\u001b[39;00m\n\u001b[1;32m--> 251\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[43mget_handle\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 252\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 253\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 254\u001b[0m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 255\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43merrors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 256\u001b[0m \u001b[43m \u001b[49m\u001b[43mcompression\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcompression\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 257\u001b[0m \u001b[43m \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstorage_options\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 258\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m handles:\n\u001b[0;32m 259\u001b[0m \u001b[38;5;66;03m# Note: self.encoding is irrelevant here\u001b[39;00m\n\u001b[0;32m 260\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwriter \u001b[38;5;241m=\u001b[39m csvlib\u001b[38;5;241m.\u001b[39mwriter(\n\u001b[0;32m 261\u001b[0m handles\u001b[38;5;241m.\u001b[39mhandle,\n\u001b[0;32m 262\u001b[0m lineterminator\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlineterminator,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 267\u001b[0m quotechar\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mquotechar,\n\u001b[0;32m 268\u001b[0m )\n\u001b[0;32m 270\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_save()\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\pandas\\io\\common.py:749\u001b[0m, in \u001b[0;36mget_handle\u001b[1;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[0;32m 747\u001b[0m \u001b[38;5;66;03m# Only for write methods\u001b[39;00m\n\u001b[0;32m 748\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m mode \u001b[38;5;129;01mand\u001b[39;00m is_path:\n\u001b[1;32m--> 749\u001b[0m \u001b[43mcheck_parent_directory\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mstr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mhandle\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 751\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m compression:\n\u001b[0;32m 752\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m compression \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mzstd\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m 753\u001b[0m \u001b[38;5;66;03m# compression libraries do not like an explicit text-mode\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\pandas\\io\\common.py:616\u001b[0m, in \u001b[0;36mcheck_parent_directory\u001b[1;34m(path)\u001b[0m\n\u001b[0;32m 614\u001b[0m parent \u001b[38;5;241m=\u001b[39m Path(path)\u001b[38;5;241m.\u001b[39mparent\n\u001b[0;32m 615\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m parent\u001b[38;5;241m.\u001b[39mis_dir():\n\u001b[1;32m--> 616\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m(\u001b[38;5;124mrf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCannot save file into a non-existent directory: \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mparent\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[1;31mOSError\u001b[0m: Cannot save file into a non-existent directory: '..\\data'" + ] + } + ], + "source": [ + "\n", + "# Fetch the data\n", + "symbol = 'BTC/USDT'\n", + "timeframe = '1h'\n", + "start_date = '2023-01-01T00:00:00Z'\n", + "end_date = '2023-07-01T00:00:00Z' # 6 months period\n", + "ohlcv = fetch_data_for_period(symbol, timeframe, start_date, end_date)\n", + "df = ohlcv_to_dataframe(ohlcv)\n", + "\n", + "# Save data to CSV\n", + "csv_path = '../data/binance_btc_usdt_6months.csv'\n", + "df.to_csv(csv_path, index=False)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class TestStrategy(bt.Strategy):\n", + " params = (('maperiod', 15),)\n", + "\n", + " def log(self, txt, dt=None):\n", + " dt = dt or self.datas[0].datetime.date(0)\n", + " print('%s, %s' % (dt.isoformat(), txt))\n", + "\n", + " def __init__(self):\n", + " self.dataclose = self.datas[0].close\n", + " self.order = None\n", + " self.buyprice = None\n", + " self.buycomm = None\n", + " self.sma = bt.indicators.SimpleMovingAverage(self.datas[0], period=self.params.maperiod)\n", + " # Additional indicators for plotting\n", + " bt.indicators.ExponentialMovingAverage(self.datas[0], period=25)\n", + " bt.indicators.WeightedMovingAverage(self.datas[0], period=25, subplot=True)\n", + " bt.indicators.StochasticSlow(self.datas[0])\n", + " bt.indicators.MACDHisto(self.datas[0])\n", + " rsi = bt.indicators.RSI(self.datas[0])\n", + " bt.indicators.SmoothedMovingAverage(rsi, period=10)\n", + " bt.indicators.ATR(self.datas[0], plot=False)\n", + "\n", + " def notify_order(self, order):\n", + " if order.status in [order.Submitted, order.Accepted]:\n", + " return\n", + " if order.status in [order.Completed]:\n", + " if order.isbuy():\n", + " self.log('BUY EXECUTED, Price: %.2f, Cost: %.2f, Comm %.2f' %\n", + " (order.executed.price, order.executed.value, order.executed.comm))\n", + " self.buyprice = order.executed.price\n", + " self.buycomm = order.executed.comm\n", + " else:\n", + " self.log('SELL EXECUTED, Price: %.2f, Cost: %.2f, Comm %.2f' %\n", + " (order.executed.price, order.executed.value, order.executed.comm))\n", + " self.bar_executed = len(self)\n", + " elif order.status in [order.Canceled, order.Margin, order.Rejected]:\n", + " self.log('Order Canceled/Margin/Rejected')\n", + " self.order = None\n", + "\n", + " def notify_trade(self, trade):\n", + " if not trade.isclosed:\n", + " return\n", + " self.log('OPERATION PROFIT, GROSS %.2f, NET %.2f' % (trade.pnl, trade.pnlcomm))\n", + "\n", + " def next(self):\n", + " self.log('Close, %.2f' % self.dataclose[0])\n", + " if self.order:\n", + " return\n", + " if not self.position:\n", + " if self.dataclose[0] > self.sma[0]:\n", + " self.log('BUY CREATE, %.2f' % self.dataclose[0])\n", + " self.order = self.buy()\n", + " else:\n", + " if self.dataclose[0] < self.sma[0]:\n", + " self.log('SELL CREATE, %.2f' % self.dataclose[0])\n", + " self.order = self.sell()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting Portfolio Value: 100000.00\n", + "2023-01-02, Close, 16717.50\n", + "2023-01-02, BUY CREATE, 16717.50\n", + "2023-01-02, BUY EXECUTED, Price: 16717.50, Cost: 83587.50, Comm 0.00\n", + "2023-01-02, Close, 16727.95\n", + "2023-01-02, Close, 16735.11\n", + "2023-01-02, Close, 16721.54\n", + "2023-01-02, Close, 16694.78\n", + "2023-01-02, Close, 16698.69\n", + "2023-01-02, Close, 16734.66\n", + "2023-01-02, Close, 16710.88\n", + "2023-01-02, Close, 16715.42\n", + "2023-01-02, Close, 16723.81\n", + "2023-01-02, Close, 16737.56\n", + "2023-01-02, Close, 16728.52\n", + "2023-01-02, Close, 16757.76\n", + "2023-01-02, Close, 16698.40\n", + "2023-01-02, SELL CREATE, 16698.40\n", + "2023-01-02, SELL EXECUTED, Price: 16698.40, Cost: 83587.50, Comm 0.00\n", + "2023-01-02, OPERATION PROFIT, GROSS -95.50, NET -95.50\n", + "2023-01-02, Close, 16672.87\n", + "2023-01-03, Close, 16695.59\n", + "2023-01-03, Close, 16677.60\n", + "2023-01-03, Close, 16674.03\n", + "2023-01-03, Close, 16691.81\n", + "2023-01-03, Close, 16685.64\n", + "2023-01-03, Close, 16725.50\n", + "2023-01-03, BUY CREATE, 16725.50\n", + "2023-01-03, BUY EXECUTED, Price: 16725.50, Cost: 83627.50, Comm 0.00\n", + "2023-01-03, Close, 16727.58\n", + "2023-01-03, Close, 16729.74\n", + "2023-01-03, Close, 16715.22\n", + "2023-01-03, Close, 16741.31\n", + "2023-01-03, Close, 16724.32\n", + "2023-01-03, Close, 16721.03\n", + "2023-01-03, Close, 16710.85\n", + "2023-01-03, Close, 16725.53\n", + "2023-01-03, Close, 16661.23\n", + "2023-01-03, SELL CREATE, 16661.23\n", + "2023-01-03, SELL EXECUTED, Price: 16662.08, Cost: 83627.50, Comm 0.00\n", + "2023-01-03, OPERATION PROFIT, GROSS -317.10, NET -317.10\n", + "2023-01-03, Close, 16676.94\n", + "2023-01-03, Close, 16622.58\n", + "2023-01-03, Close, 16633.65\n", + "2023-01-03, Close, 16645.08\n", + "2023-01-03, Close, 16643.37\n", + "2023-01-03, Close, 16661.37\n", + "2023-01-03, Close, 16664.63\n", + "2023-01-03, Close, 16677.11\n", + "2023-01-03, Close, 16675.18\n", + "2023-01-04, Close, 16660.53\n", + "2023-01-04, Close, 16701.97\n", + "2023-01-04, BUY CREATE, 16701.97\n", + "2023-01-04, BUY EXECUTED, Price: 16701.63, Cost: 83508.15, Comm 0.00\n", + "2023-01-04, Close, 16736.52\n", + "2023-01-04, Close, 16862.02\n", + "2023-01-04, Close, 16860.50\n", + "2023-01-04, Close, 16857.57\n", + "2023-01-04, Close, 16878.18\n", + "2023-01-04, Close, 16869.44\n", + "2023-01-04, Close, 16864.95\n", + "2023-01-04, Close, 16844.91\n", + "2023-01-04, Close, 16844.92\n", + "2023-01-04, Close, 16835.35\n", + "2023-01-04, Close, 16812.19\n", + "2023-01-04, Close, 16828.20\n", + "2023-01-04, Close, 16830.12\n", + "2023-01-04, Close, 16854.05\n", + "2023-01-04, Close, 16858.85\n", + "2023-01-04, Close, 16893.24\n", + "2023-01-04, Close, 16948.04\n", + "2023-01-04, Close, 16842.36\n", + "2023-01-04, SELL CREATE, 16842.36\n", + "2023-01-04, SELL EXECUTED, Price: 16842.32, Cost: 83508.15, Comm 0.00\n", + "2023-01-04, OPERATION PROFIT, GROSS 703.45, NET 703.45\n", + "2023-01-04, Close, 16806.49\n", + "2023-01-04, Close, 16826.81\n", + "2023-01-04, Close, 16826.68\n", + "2023-01-04, Close, 16850.36\n", + "2023-01-04, BUY CREATE, 16850.36\n", + "2023-01-05, BUY EXECUTED, Price: 16850.36, Cost: 84251.80, Comm 0.00\n", + "2023-01-05, Close, 16828.45\n", + "2023-01-05, SELL CREATE, 16828.45\n", + "2023-01-05, SELL EXECUTED, Price: 16828.09, Cost: 84251.80, Comm 0.00\n", + "2023-01-05, OPERATION PROFIT, GROSS -111.35, NET -111.35\n", + "2023-01-05, Close, 16832.90\n", + "2023-01-05, Close, 16836.80\n", + "2023-01-05, Close, 16827.71\n", + "2023-01-05, Close, 16836.41\n", + "2023-01-05, Close, 16844.12\n", + "2023-01-05, Close, 16817.13\n", + "2023-01-05, Close, 16823.64\n", + "2023-01-05, Close, 16807.53\n", + "2023-01-05, Close, 16807.12\n", + "2023-01-05, Close, 16825.08\n", + "2023-01-05, Close, 16833.60\n", + "2023-01-05, BUY CREATE, 16833.60\n", + "2023-01-05, BUY EXECUTED, Price: 16833.60, Cost: 84168.00, Comm 0.00\n", + "2023-01-05, Close, 16822.13\n", + "2023-01-05, SELL CREATE, 16822.13\n", + "2023-01-05, SELL EXECUTED, Price: 16822.13, Cost: 84168.00, Comm 0.00\n", + "2023-01-05, OPERATION PROFIT, GROSS -57.35, NET -57.35\n", + "2023-01-05, Close, 16780.25\n", + "2023-01-05, Close, 16829.59\n", + "2023-01-05, BUY CREATE, 16829.59\n", + "2023-01-05, BUY EXECUTED, Price: 16830.28, Cost: 84151.40, Comm 0.00\n", + "2023-01-05, Close, 16842.94\n", + "2023-01-05, Close, 16838.28\n", + "2023-01-05, Close, 16814.48\n", + "2023-01-05, SELL CREATE, 16814.48\n", + "2023-01-05, SELL EXECUTED, Price: 16814.18, Cost: 84151.40, Comm 0.00\n", + "2023-01-05, OPERATION PROFIT, GROSS -80.50, NET -80.50\n", + "2023-01-05, Close, 16841.93\n", + "2023-01-05, BUY CREATE, 16841.93\n", + "2023-01-05, BUY EXECUTED, Price: 16841.94, Cost: 84209.70, Comm 0.00\n", + "2023-01-05, Close, 16863.85\n", + "2023-01-05, Close, 16859.02\n", + "2023-01-05, Close, 16848.51\n", + "2023-01-05, Close, 16837.85\n", + "2023-01-05, Close, 16831.85\n", + "2023-01-06, Close, 16859.78\n", + "2023-01-06, Close, 16827.80\n", + "2023-01-06, SELL CREATE, 16827.80\n", + "2023-01-06, SELL EXECUTED, Price: 16827.45, Cost: 84209.70, Comm 0.00\n", + "2023-01-06, OPERATION PROFIT, GROSS -72.45, NET -72.45\n", + "2023-01-06, Close, 16837.06\n", + "2023-01-06, BUY CREATE, 16837.06\n", + "2023-01-06, BUY EXECUTED, Price: 16836.65, Cost: 84183.25, Comm 0.00\n", + "2023-01-06, Close, 16833.56\n", + "2023-01-06, SELL CREATE, 16833.56\n", + "2023-01-06, SELL EXECUTED, Price: 16833.56, Cost: 84183.25, Comm 0.00\n", + "2023-01-06, OPERATION PROFIT, GROSS -15.45, NET -15.45\n", + "2023-01-06, Close, 16822.99\n", + "2023-01-06, Close, 16810.18\n", + "2023-01-06, Close, 16786.86\n", + "2023-01-06, Close, 16794.06\n", + "2023-01-06, Close, 16802.11\n", + "2023-01-06, Close, 16787.10\n", + "2023-01-06, Close, 16767.06\n", + "2023-01-06, Close, 16738.22\n", + "2023-01-06, Close, 16731.02\n", + "2023-01-06, Close, 16774.19\n", + "2023-01-06, Close, 16748.82\n", + "2023-01-06, Close, 16840.82\n", + "2023-01-06, BUY CREATE, 16840.82\n", + "2023-01-06, BUY EXECUTED, Price: 16840.10, Cost: 84200.50, Comm 0.00\n", + "2023-01-06, Close, 16827.21\n", + "2023-01-06, Close, 16821.27\n", + "2023-01-06, Close, 16850.45\n", + "2023-01-06, Close, 16939.91\n", + "2023-01-06, Close, 16897.48\n", + "2023-01-06, Close, 16931.27\n", + "2023-01-06, Close, 16958.35\n", + "2023-01-06, Close, 16950.65\n", + "2023-01-07, Close, 16978.18\n", + "2023-01-07, Close, 16950.02\n", + "2023-01-07, Close, 16944.24\n", + "2023-01-07, Close, 16952.46\n", + "2023-01-07, Close, 16938.27\n", + "2023-01-07, Close, 16934.28\n", + "2023-01-07, Close, 16933.29\n", + "2023-01-07, Close, 16948.09\n", + "2023-01-07, Close, 16929.76\n", + "2023-01-07, SELL CREATE, 16929.76\n", + "2023-01-07, SELL EXECUTED, Price: 16929.58, Cost: 84200.50, Comm 0.00\n", + "2023-01-07, OPERATION PROFIT, GROSS 447.40, NET 447.40\n", + "2023-01-07, Close, 16928.51\n", + "2023-01-07, Close, 16922.51\n", + "2023-01-07, Close, 16918.30\n", + "2023-01-07, Close, 16916.14\n", + "2023-01-07, Close, 16919.34\n", + "2023-01-07, Close, 16937.92\n", + "2023-01-07, BUY CREATE, 16937.92\n", + "2023-01-07, BUY EXECUTED, Price: 16937.63, Cost: 84688.15, Comm 0.00\n", + "2023-01-07, Close, 16940.42\n", + "2023-01-07, Close, 16922.79\n", + "2023-01-07, SELL CREATE, 16922.79\n", + "2023-01-07, SELL EXECUTED, Price: 16922.79, Cost: 84688.15, Comm 0.00\n", + "2023-01-07, OPERATION PROFIT, GROSS -74.20, NET -74.20\n", + "2023-01-07, Close, 16928.85\n", + "2023-01-07, Close, 16938.12\n", + "2023-01-07, BUY CREATE, 16938.12\n", + "2023-01-07, BUY EXECUTED, Price: 16938.12, Cost: 84690.60, Comm 0.00\n", + "2023-01-07, Close, 16944.05\n", + "2023-01-07, Close, 16945.77\n", + "2023-01-07, Close, 16939.31\n", + "2023-01-07, Close, 16936.31\n", + "2023-01-07, Close, 16943.57\n", + "2023-01-08, Close, 16926.66\n", + "2023-01-08, SELL CREATE, 16926.66\n", + "2023-01-08, SELL EXECUTED, Price: 16926.66, Cost: 84690.60, Comm 0.00\n", + "2023-01-08, OPERATION PROFIT, GROSS -57.30, NET -57.30\n", + "2023-01-08, Close, 16929.82\n", + "2023-01-08, Close, 16931.18\n", + "2023-01-08, Close, 16944.02\n", + "2023-01-08, BUY CREATE, 16944.02\n", + "2023-01-08, BUY EXECUTED, Price: 16944.02, Cost: 84720.10, Comm 0.00\n", + "2023-01-08, Close, 16934.75\n", + "2023-01-08, SELL CREATE, 16934.75\n", + "2023-01-08, SELL EXECUTED, Price: 16934.95, Cost: 84720.10, Comm 0.00\n", + "2023-01-08, OPERATION PROFIT, GROSS -45.35, NET -45.35\n", + "2023-01-08, Close, 16943.73\n", + "2023-01-08, BUY CREATE, 16943.73\n", + "2023-01-08, BUY EXECUTED, Price: 16943.73, Cost: 84718.65, Comm 0.00\n", + "2023-01-08, Close, 16950.92\n", + "2023-01-08, Close, 16953.77\n", + "2023-01-08, Close, 16946.07\n", + "2023-01-08, Close, 16935.60\n", + "2023-01-08, SELL CREATE, 16935.60\n", + "2023-01-08, SELL EXECUTED, Price: 16935.60, Cost: 84718.65, Comm 0.00\n", + "2023-01-08, OPERATION PROFIT, GROSS -40.65, NET -40.65\n", + "2023-01-08, Close, 16936.41\n", + "2023-01-08, Close, 16927.42\n", + "2023-01-08, Close, 16923.75\n", + "2023-01-08, Close, 16933.03\n", + "2023-01-08, Close, 16952.44\n", + "2023-01-08, BUY CREATE, 16952.44\n", + "2023-01-08, BUY EXECUTED, Price: 16952.44, Cost: 84762.20, Comm 0.00\n", + "2023-01-08, Close, 17000.43\n", + "2023-01-08, Close, 16936.87\n", + "2023-01-08, SELL CREATE, 16936.87\n", + "2023-01-08, SELL EXECUTED, Price: 16936.87, Cost: 84762.20, Comm 0.00\n", + "2023-01-08, OPERATION PROFIT, GROSS -77.85, NET -77.85\n", + "2023-01-08, Close, 16928.50\n", + "2023-01-08, Close, 16929.84\n", + "2023-01-08, Close, 16927.25\n", + "2023-01-08, Close, 16966.67\n", + "2023-01-08, BUY CREATE, 16966.67\n", + "2023-01-08, BUY EXECUTED, Price: 16966.95, Cost: 84834.75, Comm 0.00\n", + "2023-01-08, Close, 16957.46\n", + "2023-01-08, Close, 16963.14\n", + "2023-01-08, Close, 17127.83\n", + "2023-01-09, Close, 17184.51\n", + "2023-01-09, Close, 17175.02\n", + "2023-01-09, Close, 17191.47\n", + "2023-01-09, Close, 17197.00\n", + "2023-01-09, Close, 17226.49\n", + "2023-01-09, Close, 17205.95\n", + "2023-01-09, Close, 17189.24\n", + "2023-01-09, Close, 17198.48\n", + "2023-01-09, Close, 17191.68\n", + "2023-01-09, Close, 17238.38\n", + "2023-01-09, Close, 17264.50\n", + "2023-01-09, Close, 17238.93\n", + "2023-01-09, Close, 17249.06\n", + "2023-01-09, Close, 17226.90\n", + "2023-01-09, Close, 17264.25\n", + "2023-01-09, Close, 17268.49\n", + "2023-01-09, Close, 17327.84\n", + "2023-01-09, Close, 17356.96\n", + "2023-01-09, Close, 17350.71\n", + "2023-01-09, Close, 17293.69\n", + "2023-01-09, Close, 17221.29\n", + "2023-01-09, SELL CREATE, 17221.29\n", + "2023-01-09, SELL EXECUTED, Price: 17221.29, Cost: 84834.75, Comm 0.00\n", + "2023-01-09, OPERATION PROFIT, GROSS 1271.70, NET 1271.70\n", + "2023-01-09, Close, 17182.48\n", + "2023-01-09, Close, 17204.83\n", + "2023-01-09, Close, 17178.26\n", + "2023-01-10, Close, 17219.19\n", + "2023-01-10, Close, 17194.39\n", + "2023-01-10, Close, 17185.94\n", + "2023-01-10, Close, 17205.72\n", + "2023-01-10, Close, 17221.68\n", + "2023-01-10, Close, 17228.77\n", + "2023-01-10, Close, 17203.95\n", + "2023-01-10, Close, 17203.20\n", + "2023-01-10, Close, 17256.34\n", + "2023-01-10, BUY CREATE, 17256.34\n", + "2023-01-10, BUY EXECUTED, Price: 17256.34, Cost: 86281.70, Comm 0.00\n", + "2023-01-10, Close, 17247.71\n", + "2023-01-10, Close, 17271.02\n", + "2023-01-10, Close, 17252.89\n", + "2023-01-10, Close, 17224.15\n", + "2023-01-10, Close, 17246.05\n", + "2023-01-10, Close, 17286.59\n", + "2023-01-10, Close, 17327.70\n", + "2023-01-10, Close, 17302.15\n", + "2023-01-10, Close, 17325.97\n", + "2023-01-10, Close, 17433.95\n", + "2023-01-10, Close, 17432.85\n", + "2023-01-10, Close, 17477.15\n", + "2023-01-10, Close, 17463.56\n", + "2023-01-10, Close, 17428.08\n", + "2023-01-10, Close, 17440.66\n", + "2023-01-11, Close, 17466.02\n", + "2023-01-11, Close, 17458.05\n", + "2023-01-11, Close, 17388.20\n", + "2023-01-11, Close, 17416.14\n", + "2023-01-11, Close, 17408.39\n", + "2023-01-11, Close, 17406.30\n", + "2023-01-11, SELL CREATE, 17406.30\n", + "2023-01-11, SELL EXECUTED, Price: 17406.16, Cost: 86281.70, Comm 0.00\n", + "2023-01-11, OPERATION PROFIT, GROSS 749.10, NET 749.10\n", + "2023-01-11, Close, 17437.29\n", + "2023-01-11, BUY CREATE, 17437.29\n", + "2023-01-11, BUY EXECUTED, Price: 17436.89, Cost: 87184.45, Comm 0.00\n", + "2023-01-11, Close, 17446.65\n", + "2023-01-11, Close, 17447.60\n", + "2023-01-11, Close, 17446.71\n", + "2023-01-11, Close, 17441.24\n", + "2023-01-11, Close, 17437.75\n", + "2023-01-11, Close, 17418.56\n", + "2023-01-11, SELL CREATE, 17418.56\n", + "2023-01-11, SELL EXECUTED, Price: 17418.56, Cost: 87184.45, Comm 0.00\n", + "2023-01-11, OPERATION PROFIT, GROSS -91.65, NET -91.65\n", + "2023-01-11, Close, 17413.43\n", + "2023-01-11, Close, 17413.97\n", + "2023-01-11, Close, 17332.43\n", + "2023-01-11, Close, 17347.62\n", + "2023-01-11, Close, 17382.08\n", + "2023-01-11, Close, 17487.09\n", + "2023-01-11, BUY CREATE, 17487.09\n", + "2023-01-11, BUY EXECUTED, Price: 17486.44, Cost: 87432.20, Comm 0.00\n", + "2023-01-11, Close, 17550.29\n", + "2023-01-11, Close, 17550.57\n", + "2023-01-11, Close, 17558.60\n", + "2023-01-11, Close, 17556.41\n", + "2023-01-11, Close, 17943.26\n", + "2023-01-12, Close, 18264.10\n", + "2023-01-12, Close, 18221.51\n", + "2023-01-12, Close, 18207.54\n", + "2023-01-12, Close, 18224.68\n", + "2023-01-12, Close, 18215.66\n", + "2023-01-12, Close, 18087.54\n", + "2023-01-12, Close, 18147.77\n", + "2023-01-12, Close, 18138.22\n", + "2023-01-12, Close, 18151.52\n", + "2023-01-12, Close, 18164.67\n", + "2023-01-12, Close, 18185.60\n", + "2023-01-12, Close, 18200.80\n", + "2023-01-12, Close, 18268.94\n", + "2023-01-12, Close, 18284.91\n", + "2023-01-12, Close, 17998.56\n", + "2023-01-12, SELL CREATE, 17998.56\n", + "2023-01-12, SELL EXECUTED, Price: 17997.63, Cost: 87432.20, Comm 0.00\n", + "2023-01-12, OPERATION PROFIT, GROSS 2555.95, NET 2555.95\n", + "2023-01-12, Close, 18086.62\n", + "2023-01-12, Close, 18134.55\n", + "2023-01-12, Close, 18837.06\n", + "2023-01-12, BUY CREATE, 18837.06\n", + "2023-01-12, BUY EXECUTED, Price: 18837.06, Cost: 94185.30, Comm 0.00\n", + "2023-01-12, Close, 18796.93\n", + "2023-01-12, Close, 18885.35\n", + "2023-01-12, Close, 19048.95\n", + "2023-01-12, Close, 18830.07\n", + "2023-01-12, Close, 18913.92\n", + "2023-01-12, Close, 18846.62\n", + "2023-01-13, Close, 18771.61\n", + "2023-01-13, Close, 18811.48\n", + "2023-01-13, Close, 18835.48\n", + "2023-01-13, Close, 18876.37\n", + "2023-01-13, Close, 18821.27\n", + "2023-01-13, Close, 18787.71\n", + "2023-01-13, Close, 18852.68\n", + "2023-01-13, Close, 18824.25\n", + "2023-01-13, SELL CREATE, 18824.25\n", + "2023-01-13, SELL EXECUTED, Price: 18825.00, Cost: 94185.30, Comm 0.00\n", + "2023-01-13, OPERATION PROFIT, GROSS -60.30, NET -60.30\n", + "2023-01-13, Close, 18842.15\n", + "2023-01-13, Close, 18910.23\n", + "2023-01-13, BUY CREATE, 18910.23\n", + "2023-01-13, BUY EXECUTED, Price: 18910.80, Cost: 94554.00, Comm 0.00\n", + "2023-01-13, Close, 19042.01\n", + "2023-01-13, Close, 18920.95\n", + "2023-01-13, Close, 18864.59\n", + "2023-01-13, Close, 18854.84\n", + "2023-01-13, SELL CREATE, 18854.84\n", + "2023-01-13, SELL EXECUTED, Price: 18854.84, Cost: 94554.00, Comm 0.00\n", + "2023-01-13, OPERATION PROFIT, GROSS -279.80, NET -279.80\n", + "2023-01-13, Close, 18996.27\n", + "2023-01-13, BUY CREATE, 18996.27\n", + "2023-01-13, BUY EXECUTED, Price: 18996.27, Cost: 94981.35, Comm 0.00\n", + "2023-01-13, Close, 19261.19\n", + "2023-01-13, Close, 19133.39\n", + "2023-01-13, Close, 19256.06\n", + "2023-01-13, Close, 19292.44\n", + "2023-01-13, Close, 19362.01\n", + "2023-01-13, Close, 19473.67\n", + "2023-01-13, Close, 19816.81\n", + "2023-01-13, Close, 19849.41\n", + "2023-01-13, Close, 19930.01\n", + "2023-01-14, Close, 20891.67\n", + "2023-01-14, Close, 20927.44\n", + "2023-01-14, Close, 20938.93\n", + "2023-01-14, Close, 20967.23\n", + "2023-01-14, Close, 20894.86\n", + "2023-01-14, Close, 20841.62\n", + "2023-01-14, Close, 20955.57\n", + "2023-01-14, Close, 20897.36\n", + "2023-01-14, Close, 21003.35\n", + "2023-01-14, Close, 20523.75\n", + "2023-01-14, Close, 20496.77\n", + "2023-01-14, SELL CREATE, 20496.77\n", + "2023-01-14, SELL EXECUTED, Price: 20496.77, Cost: 94981.35, Comm 0.00\n", + "2023-01-14, OPERATION PROFIT, GROSS 7502.50, NET 7502.50\n", + "2023-01-14, Close, 20721.73\n", + "2023-01-14, BUY CREATE, 20721.73\n", + "2023-01-14, BUY EXECUTED, Price: 20721.03, Cost: 103605.15, Comm 0.00\n", + "2023-01-14, Close, 20911.19\n", + "2023-01-14, Close, 20940.71\n", + "2023-01-14, Close, 20834.40\n", + "2023-01-14, SELL CREATE, 20834.40\n", + "2023-01-14, SELL EXECUTED, Price: 20832.60, Cost: 103605.15, Comm 0.00\n", + "2023-01-14, OPERATION PROFIT, GROSS 557.85, NET 557.85\n", + "2023-01-14, Close, 20786.74\n", + "2023-01-14, Close, 20810.66\n", + "2023-01-14, Close, 20755.78\n", + "2023-01-14, Close, 20757.99\n", + "2023-01-14, Close, 20783.68\n", + "2023-01-14, Close, 20877.47\n", + "2023-01-14, BUY CREATE, 20877.47\n", + "2023-01-14, BUY EXECUTED, Price: 20876.31, Cost: 104381.55, Comm 0.00\n", + "2023-01-14, Close, 20900.66\n", + "2023-01-14, Close, 20989.97\n", + "2023-01-14, Close, 20954.92\n", + "2023-01-15, Close, 20767.05\n", + "2023-01-15, SELL CREATE, 20767.05\n", + "2023-01-15, SELL EXECUTED, Price: 20766.57, Cost: 104381.55, Comm 0.00\n", + "2023-01-15, OPERATION PROFIT, GROSS -548.70, NET -548.70\n", + "2023-01-15, Close, 20770.29\n", + "2023-01-15, Close, 20672.91\n", + "2023-01-15, Close, 20719.09\n", + "2023-01-15, Close, 20698.14\n", + "2023-01-15, Close, 20749.76\n", + "2023-01-15, Close, 20717.00\n", + "2023-01-15, Close, 20735.69\n", + "2023-01-15, Close, 20617.71\n", + "2023-01-15, Close, 20750.59\n", + "2023-01-15, Close, 20732.83\n", + "2023-01-15, Close, 20722.23\n", + "2023-01-15, Close, 20694.03\n", + "2023-01-15, Close, 20705.79\n", + "2023-01-15, Close, 20787.58\n", + "2023-01-15, BUY CREATE, 20787.58\n", + "2023-01-15, BUY EXECUTED, Price: 20787.87, Cost: 103939.35, Comm 0.00\n", + "2023-01-15, Close, 20908.28\n", + "2023-01-15, Close, 20869.20\n", + "2023-01-15, Close, 20920.23\n", + "2023-01-15, Close, 20817.94\n", + "2023-01-15, Close, 20870.15\n", + "2023-01-15, Close, 20905.69\n", + "2023-01-15, Close, 20900.62\n", + "2023-01-15, Close, 20911.27\n", + "2023-01-15, Close, 20871.50\n", + "2023-01-16, Close, 20966.58\n", + "2023-01-16, Close, 21182.87\n", + "2023-01-16, Close, 21209.31\n", + "2023-01-16, Close, 21075.68\n", + "2023-01-16, Close, 21148.99\n", + "2023-01-16, Close, 21187.16\n", + "2023-01-16, Close, 21149.80\n", + "2023-01-16, Close, 21109.23\n", + "2023-01-16, Close, 20747.70\n", + "2023-01-16, SELL CREATE, 20747.70\n", + "2023-01-16, SELL EXECUTED, Price: 20746.75, Cost: 103939.35, Comm 0.00\n", + "2023-01-16, OPERATION PROFIT, GROSS -205.60, NET -205.60\n", + "2023-01-16, Close, 20824.08\n", + "2023-01-16, Close, 20850.68\n", + "2023-01-16, Close, 20817.56\n", + "2023-01-16, Close, 20787.54\n", + "2023-01-16, Close, 20827.47\n", + "2023-01-16, Close, 20860.68\n", + "2023-01-16, Close, 20994.17\n", + "2023-01-16, BUY CREATE, 20994.17\n", + "2023-01-16, BUY EXECUTED, Price: 20995.37, Cost: 104976.85, Comm 0.00\n", + "2023-01-16, Close, 20998.50\n", + "2023-01-16, Close, 21103.99\n", + "2023-01-16, Close, 21281.97\n", + "2023-01-16, Close, 21308.57\n", + "2023-01-16, Close, 21292.00\n", + "2023-01-16, Close, 21132.36\n", + "2023-01-16, Close, 21185.89\n", + "2023-01-16, Close, 21185.65\n", + "2023-01-17, Close, 21109.52\n", + "2023-01-17, Close, 21041.30\n", + "2023-01-17, SELL CREATE, 21041.30\n", + "2023-01-17, SELL EXECUTED, Price: 21039.96, Cost: 104976.85, Comm 0.00\n", + "2023-01-17, OPERATION PROFIT, GROSS 222.95, NET 222.95\n", + "2023-01-17, Close, 21102.13\n", + "2023-01-17, BUY CREATE, 21102.13\n", + "2023-01-17, BUY EXECUTED, Price: 21102.13, Cost: 105510.65, Comm 0.00\n", + "2023-01-17, Close, 21124.57\n", + "2023-01-17, Close, 21159.29\n", + "2023-01-17, Close, 21151.21\n", + "2023-01-17, Close, 21075.27\n", + "2023-01-17, SELL CREATE, 21075.27\n", + "2023-01-17, SELL EXECUTED, Price: 21076.50, Cost: 105510.65, Comm 0.00\n", + "2023-01-17, OPERATION PROFIT, GROSS -128.15, NET -128.15\n", + "2023-01-17, Close, 21133.65\n", + "2023-01-17, Close, 21200.95\n", + "2023-01-17, BUY CREATE, 21200.95\n", + "2023-01-17, BUY EXECUTED, Price: 21199.51, Cost: 105997.55, Comm 0.00\n", + "2023-01-17, Close, 21174.92\n", + "2023-01-17, Close, 21129.69\n", + "2023-01-17, SELL CREATE, 21129.69\n", + "2023-01-17, SELL EXECUTED, Price: 21130.43, Cost: 105997.55, Comm 0.00\n", + "2023-01-17, OPERATION PROFIT, GROSS -345.40, NET -345.40\n", + "2023-01-17, Close, 21219.75\n", + "2023-01-17, BUY CREATE, 21219.75\n", + "2023-01-17, BUY EXECUTED, Price: 21219.21, Cost: 106096.05, Comm 0.00\n", + "2023-01-17, Close, 21252.23\n", + "2023-01-17, Close, 21235.07\n", + "2023-01-17, Close, 21281.66\n", + "2023-01-17, Close, 21176.06\n", + "2023-01-17, Close, 21162.92\n", + "2023-01-17, SELL CREATE, 21162.92\n", + "2023-01-17, SELL EXECUTED, Price: 21161.92, Cost: 106096.05, Comm 0.00\n", + "2023-01-17, OPERATION PROFIT, GROSS -286.45, NET -286.45\n", + "2023-01-17, Close, 21220.78\n", + "2023-01-17, BUY CREATE, 21220.78\n", + "2023-01-17, BUY EXECUTED, Price: 21222.39, Cost: 106111.95, Comm 0.00\n", + "2023-01-17, Close, 21362.89\n", + "2023-01-17, Close, 21336.46\n", + "2023-01-17, Close, 21390.44\n", + "2023-01-17, Close, 21312.63\n", + "2023-01-17, Close, 21232.38\n", + "2023-01-17, SELL CREATE, 21232.38\n", + "2023-01-17, SELL EXECUTED, Price: 21232.38, Cost: 106111.95, Comm 0.00\n", + "2023-01-17, OPERATION PROFIT, GROSS 49.95, NET 49.95\n", + "2023-01-17, Close, 21134.81\n", + "2023-01-18, Close, 21202.97\n", + "2023-01-18, Close, 21243.96\n", + "2023-01-18, Close, 21292.56\n", + "2023-01-18, BUY CREATE, 21292.56\n", + "2023-01-18, BUY EXECUTED, Price: 21293.76, Cost: 106468.80, Comm 0.00\n", + "2023-01-18, Close, 21258.54\n", + "2023-01-18, Close, 21279.61\n", + "2023-01-18, Close, 21311.33\n", + "2023-01-18, Close, 21261.76\n", + "2023-01-18, SELL CREATE, 21261.76\n", + "2023-01-18, SELL EXECUTED, Price: 21261.03, Cost: 106468.80, Comm 0.00\n", + "2023-01-18, OPERATION PROFIT, GROSS -163.65, NET -163.65\n", + "2023-01-18, Close, 21307.94\n", + "2023-01-18, BUY CREATE, 21307.94\n", + "2023-01-18, BUY EXECUTED, Price: 21307.94, Cost: 106539.70, Comm 0.00\n", + "2023-01-18, Close, 21249.31\n", + "2023-01-18, SELL CREATE, 21249.31\n", + "2023-01-18, SELL EXECUTED, Price: 21249.31, Cost: 106539.70, Comm 0.00\n", + "2023-01-18, OPERATION PROFIT, GROSS -293.15, NET -293.15\n", + "2023-01-18, Close, 21230.09\n", + "2023-01-18, Close, 21183.83\n", + "2023-01-18, Close, 21204.67\n", + "2023-01-18, Close, 21259.18\n", + "2023-01-18, BUY CREATE, 21259.18\n", + "2023-01-18, BUY EXECUTED, Price: 21260.13, Cost: 106300.65, Comm 0.00\n", + "2023-01-18, Close, 21403.31\n", + "2023-01-18, Close, 21424.30\n", + "2023-01-18, Close, 21042.73\n", + "2023-01-18, SELL CREATE, 21042.73\n", + "2023-01-18, SELL EXECUTED, Price: 21042.73, Cost: 106300.65, Comm 0.00\n", + "2023-01-18, OPERATION PROFIT, GROSS -1087.00, NET -1087.00\n", + "2023-01-18, Close, 20845.47\n", + "2023-01-18, Close, 20887.85\n", + "2023-01-18, Close, 20936.83\n", + "2023-01-18, Close, 20906.54\n", + "2023-01-18, Close, 20732.60\n", + "2023-01-18, Close, 20780.36\n", + "2023-01-18, Close, 20805.80\n", + "2023-01-18, Close, 20677.47\n", + "2023-01-19, Close, 20694.01\n", + "2023-01-19, Close, 20716.95\n", + "2023-01-19, Close, 20763.66\n", + "2023-01-19, Close, 20748.04\n", + "2023-01-19, Close, 20810.18\n", + "2023-01-19, Close, 20814.82\n", + "2023-01-19, BUY CREATE, 20814.82\n", + "2023-01-19, BUY EXECUTED, Price: 20814.82, Cost: 104074.10, Comm 0.00\n", + "2023-01-19, Close, 20828.59\n", + "2023-01-19, Close, 20818.95\n", + "2023-01-19, Close, 20769.06\n", + "2023-01-19, SELL CREATE, 20769.06\n", + "2023-01-19, SELL EXECUTED, Price: 20769.06, Cost: 104074.10, Comm 0.00\n", + "2023-01-19, OPERATION PROFIT, GROSS -228.80, NET -228.80\n", + "2023-01-19, Close, 20795.39\n", + "2023-01-19, BUY CREATE, 20795.39\n", + "2023-01-19, BUY EXECUTED, Price: 20794.73, Cost: 103973.65, Comm 0.00\n", + "2023-01-19, Close, 20796.47\n", + "2023-01-19, Close, 20743.72\n", + "2023-01-19, SELL CREATE, 20743.72\n", + "2023-01-19, SELL EXECUTED, Price: 20744.17, Cost: 103973.65, Comm 0.00\n", + "2023-01-19, OPERATION PROFIT, GROSS -252.80, NET -252.80\n", + "2023-01-19, Close, 20727.03\n", + "2023-01-19, Close, 20776.95\n", + "2023-01-19, BUY CREATE, 20776.95\n", + "2023-01-19, BUY EXECUTED, Price: 20776.06, Cost: 103880.30, Comm 0.00\n", + "2023-01-19, Close, 20799.40\n", + "2023-01-19, Close, 20876.44\n", + "2023-01-19, Close, 20875.41\n", + "2023-01-19, Close, 20841.16\n", + "2023-01-19, Close, 20977.73\n", + "2023-01-19, Close, 21090.95\n", + "2023-01-19, Close, 21102.44\n", + "2023-01-19, Close, 20932.98\n", + "2023-01-19, Close, 21065.23\n", + "2023-01-19, Close, 21071.59\n", + "2023-01-20, Close, 21054.74\n", + "2023-01-20, Close, 21117.28\n", + "2023-01-20, Close, 21079.66\n", + "2023-01-20, Close, 21087.74\n", + "2023-01-20, Close, 20991.01\n", + "2023-01-20, SELL CREATE, 20991.01\n", + "2023-01-20, SELL EXECUTED, Price: 20991.01, Cost: 103880.30, Comm 0.00\n", + "2023-01-20, OPERATION PROFIT, GROSS 1074.75, NET 1074.75\n", + "2023-01-20, Close, 20982.27\n", + "2023-01-20, Close, 20943.73\n", + "2023-01-20, Close, 20959.44\n", + "2023-01-20, Close, 20946.15\n", + "2023-01-20, Close, 20959.17\n", + "2023-01-20, Close, 20962.16\n", + "2023-01-20, Close, 20963.51\n", + "2023-01-20, Close, 21089.54\n", + "2023-01-20, BUY CREATE, 21089.54\n", + "2023-01-20, BUY EXECUTED, Price: 21088.82, Cost: 105444.10, Comm 0.00\n", + "2023-01-20, Close, 21058.68\n", + "2023-01-20, Close, 21153.97\n", + "2023-01-20, Close, 21144.77\n", + "2023-01-20, Close, 21313.29\n", + "2023-01-20, Close, 21353.61\n", + "2023-01-20, Close, 21384.49\n", + "2023-01-20, Close, 21496.67\n", + "2023-01-20, Close, 22288.37\n", + "2023-01-20, Close, 22315.41\n", + "2023-01-20, Close, 22595.08\n", + "2023-01-20, Close, 22667.21\n", + "2023-01-21, Close, 22576.17\n", + "2023-01-21, Close, 22563.99\n", + "2023-01-21, Close, 22551.05\n", + "2023-01-21, Close, 22547.35\n", + "2023-01-21, Close, 22597.96\n", + "2023-01-21, Close, 22573.98\n", + "2023-01-21, Close, 22620.93\n", + "2023-01-21, Close, 22638.36\n", + "2023-01-21, Close, 22700.63\n", + "2023-01-21, Close, 23037.49\n", + "2023-01-21, Close, 22777.52\n", + "2023-01-21, Close, 22905.65\n", + "2023-01-21, Close, 23039.50\n", + "2023-01-21, Close, 22930.04\n", + "2023-01-21, Close, 22955.26\n", + "2023-01-21, Close, 22998.90\n", + "2023-01-21, Close, 23197.45\n", + "2023-01-21, Close, 23226.65\n", + "2023-01-21, Close, 23248.52\n", + "2023-01-21, Close, 23270.50\n", + "2023-01-21, Close, 23093.38\n", + "2023-01-21, Close, 23204.64\n", + "2023-01-21, Close, 22759.71\n", + "2023-01-21, SELL CREATE, 22759.71\n", + "2023-01-21, SELL EXECUTED, Price: 22757.14, Cost: 105444.10, Comm 0.00\n", + "2023-01-21, OPERATION PROFIT, GROSS 8341.60, NET 8341.60\n", + "2023-01-21, Close, 22783.55\n", + "2023-01-22, Close, 22877.48\n", + "2023-01-22, Close, 22792.13\n", + "2023-01-22, Close, 22707.64\n", + "2023-01-22, Close, 22758.30\n", + "2023-01-22, Close, 22847.79\n", + "2023-01-22, Close, 22878.37\n", + "2023-01-22, Close, 22919.67\n", + "2023-01-22, Close, 22895.20\n", + "2023-01-22, Close, 22909.76\n", + "2023-01-22, Close, 22856.68\n", + "2023-01-22, Close, 22872.97\n", + "2023-01-22, Close, 22783.61\n", + "2023-01-22, Close, 22869.56\n", + "2023-01-22, BUY CREATE, 22869.56\n", + "2023-01-22, BUY EXECUTED, Price: 22869.56, Cost: 114347.80, Comm 0.00\n", + "2023-01-22, Close, 22897.79\n", + "2023-01-22, Close, 22990.41\n", + "2023-01-22, Close, 22794.51\n", + "2023-01-22, SELL CREATE, 22794.51\n", + "2023-01-22, SELL EXECUTED, Price: 22794.63, Cost: 114347.80, Comm 0.00\n", + "2023-01-22, OPERATION PROFIT, GROSS -374.65, NET -374.65\n", + "2023-01-22, Close, 22819.28\n", + "2023-01-22, Close, 22922.34\n", + "2023-01-22, BUY CREATE, 22922.34\n", + "2023-01-22, BUY EXECUTED, Price: 22922.34, Cost: 114611.70, Comm 0.00\n", + "2023-01-22, Close, 22838.00\n", + "2023-01-22, SELL CREATE, 22838.00\n", + "2023-01-22, SELL EXECUTED, Price: 22838.00, Cost: 114611.70, Comm 0.00\n", + "2023-01-22, OPERATION PROFIT, GROSS -421.70, NET -421.70\n", + "2023-01-22, Close, 22722.15\n", + "2023-01-22, Close, 22459.46\n", + "2023-01-22, Close, 22585.37\n", + "2023-01-22, Close, 22676.48\n", + "2023-01-22, Close, 22707.88\n", + "2023-01-23, Close, 22745.28\n", + "2023-01-23, Close, 22699.37\n", + "2023-01-23, Close, 22752.05\n", + "2023-01-23, Close, 22661.02\n", + "2023-01-23, Close, 22758.32\n", + "2023-01-23, BUY CREATE, 22758.32\n", + "2023-01-23, BUY EXECUTED, Price: 22758.32, Cost: 113791.60, Comm 0.00\n", + "2023-01-23, Close, 22723.63\n", + "2023-01-23, SELL CREATE, 22723.63\n", + "2023-01-23, SELL EXECUTED, Price: 22724.48, Cost: 113791.60, Comm 0.00\n", + "2023-01-23, OPERATION PROFIT, GROSS -169.20, NET -169.20\n", + "2023-01-23, Close, 22773.33\n", + "2023-01-23, BUY CREATE, 22773.33\n", + "2023-01-23, BUY EXECUTED, Price: 22773.92, Cost: 113869.60, Comm 0.00\n", + "2023-01-23, Close, 22695.90\n", + "2023-01-23, SELL CREATE, 22695.90\n", + "2023-01-23, SELL EXECUTED, Price: 22696.61, Cost: 113869.60, Comm 0.00\n", + "2023-01-23, OPERATION PROFIT, GROSS -386.55, NET -386.55\n", + "2023-01-23, Close, 22719.28\n", + "2023-01-23, BUY CREATE, 22719.28\n", + "2023-01-23, BUY EXECUTED, Price: 22719.28, Cost: 113596.40, Comm 0.00\n", + "2023-01-23, Close, 22784.18\n", + "2023-01-23, Close, 22909.95\n", + "2023-01-23, Close, 22904.58\n", + "2023-01-23, Close, 22910.74\n", + "2023-01-23, Close, 22798.41\n", + "2023-01-23, Close, 22622.05\n", + "2023-01-23, SELL CREATE, 22622.05\n", + "2023-01-23, SELL EXECUTED, Price: 22627.71, Cost: 113596.40, Comm 0.00\n", + "2023-01-23, OPERATION PROFIT, GROSS -457.85, NET -457.85\n", + "2023-01-23, Close, 22853.14\n", + "2023-01-23, BUY CREATE, 22853.14\n", + "2023-01-23, BUY EXECUTED, Price: 22855.44, Cost: 114277.20, Comm 0.00\n", + "2023-01-23, Close, 22911.17\n", + "2023-01-23, Close, 23065.22\n", + "2023-01-23, Close, 22936.20\n", + "2023-01-23, Close, 22792.47\n", + "2023-01-23, SELL CREATE, 22792.47\n", + "2023-01-23, SELL EXECUTED, Price: 22792.47, Cost: 114277.20, Comm 0.00\n", + "2023-01-23, OPERATION PROFIT, GROSS -314.85, NET -314.85\n", + "2023-01-23, Close, 23022.64\n", + "2023-01-23, BUY CREATE, 23022.64\n", + "2023-01-23, BUY EXECUTED, Price: 23020.53, Cost: 115102.65, Comm 0.00\n", + "2023-01-23, Close, 22996.00\n", + "2023-01-23, Close, 22925.32\n", + "2023-01-23, Close, 22916.45\n", + "2023-01-24, Close, 22986.44\n", + "2023-01-24, Close, 23089.46\n", + "2023-01-24, Close, 23036.68\n", + "2023-01-24, Close, 23079.27\n", + "2023-01-24, Close, 23072.15\n", + "2023-01-24, Close, 23118.17\n", + "2023-01-24, Close, 23095.63\n", + "2023-01-24, Close, 23054.08\n", + "2023-01-24, Close, 23053.12\n", + "2023-01-24, Close, 22852.79\n", + "2023-01-24, SELL CREATE, 22852.79\n", + "2023-01-24, SELL EXECUTED, Price: 22852.21, Cost: 115102.65, Comm 0.00\n", + "2023-01-24, OPERATION PROFIT, GROSS -841.60, NET -841.60\n", + "2023-01-24, Close, 22902.51\n", + "2023-01-24, Close, 22917.66\n", + "2023-01-24, Close, 22964.13\n", + "2023-01-24, Close, 22859.93\n", + "2023-01-24, Close, 22859.10\n", + "2023-01-24, Close, 22931.36\n", + "2023-01-24, Close, 22875.18\n", + "2023-01-24, Close, 22913.49\n", + "2023-01-24, Close, 22999.85\n", + "2023-01-24, BUY CREATE, 22999.85\n", + "2023-01-24, BUY EXECUTED, Price: 23000.00, Cost: 115000.00, Comm 0.00\n", + "2023-01-24, Close, 23018.53\n", + "2023-01-24, Close, 23010.34\n", + "2023-01-24, Close, 22902.84\n", + "2023-01-24, SELL CREATE, 22902.84\n", + "2023-01-24, SELL EXECUTED, Price: 22902.84, Cost: 115000.00, Comm 0.00\n", + "2023-01-24, OPERATION PROFIT, GROSS -485.80, NET -485.80\n", + "2023-01-24, Close, 22755.52\n", + "2023-01-24, Close, 22632.89\n", + "2023-01-25, Close, 22652.23\n", + "2023-01-25, Close, 22490.64\n", + "2023-01-25, Close, 22549.89\n", + "2023-01-25, Close, 22643.61\n", + "2023-01-25, Close, 22624.83\n", + "2023-01-25, Close, 22670.72\n", + "2023-01-25, Close, 22713.76\n", + "2023-01-25, Close, 22712.45\n", + "2023-01-25, Close, 22659.72\n", + "2023-01-25, Close, 22607.26\n", + "2023-01-25, Close, 22611.90\n", + "2023-01-25, Close, 22598.47\n", + "2023-01-25, Close, 22694.23\n", + "2023-01-25, BUY CREATE, 22694.23\n", + "2023-01-25, BUY EXECUTED, Price: 22694.22, Cost: 113471.10, Comm 0.00\n", + "2023-01-25, Close, 22595.72\n", + "2023-01-25, SELL CREATE, 22595.72\n", + "2023-01-25, SELL EXECUTED, Price: 22595.08, Cost: 113471.10, Comm 0.00\n", + "2023-01-25, OPERATION PROFIT, GROSS -495.70, NET -495.70\n", + "2023-01-25, Close, 22435.47\n", + "2023-01-25, Close, 22577.86\n", + "2023-01-25, Close, 22629.75\n", + "2023-01-25, BUY CREATE, 22629.75\n", + "2023-01-25, BUY EXECUTED, Price: 22629.75, Cost: 113148.75, Comm 0.00\n", + "2023-01-25, Close, 22568.94\n", + "2023-01-25, SELL CREATE, 22568.94\n", + "2023-01-25, SELL EXECUTED, Price: 22569.11, Cost: 113148.75, Comm 0.00\n", + "2023-01-25, OPERATION PROFIT, GROSS -303.20, NET -303.20\n", + "2023-01-25, Close, 22724.90\n", + "2023-01-25, BUY CREATE, 22724.90\n", + "2023-01-25, BUY EXECUTED, Price: 22724.90, Cost: 113624.50, Comm 0.00\n", + "2023-01-25, Close, 22748.86\n", + "2023-01-25, Close, 22938.09\n", + "2023-01-25, Close, 23592.55\n", + "2023-01-25, Close, 22932.20\n", + "2023-01-25, Close, 23060.94\n", + "2023-01-26, Close, 23240.42\n", + "2023-01-26, Close, 23163.24\n", + "2023-01-26, Close, 23178.98\n", + "2023-01-26, Close, 23136.16\n", + "2023-01-26, Close, 23179.35\n", + "2023-01-26, Close, 23147.48\n", + "2023-01-26, Close, 23087.87\n", + "2023-01-26, Close, 22966.73\n", + "2023-01-26, SELL CREATE, 22966.73\n", + "2023-01-26, SELL EXECUTED, Price: 22965.81, Cost: 113624.50, Comm 0.00\n", + "2023-01-26, OPERATION PROFIT, GROSS 1204.55, NET 1204.55\n", + "2023-01-26, Close, 23003.87\n", + "2023-01-26, Close, 22970.70\n", + "2023-01-26, Close, 22939.26\n", + "2023-01-26, Close, 22992.94\n", + "2023-01-26, Close, 23120.96\n", + "2023-01-26, BUY CREATE, 23120.96\n", + "2023-01-26, Order Canceled/Margin/Rejected\n", + "2023-01-26, Close, 23128.35\n", + "2023-01-26, BUY CREATE, 23128.35\n", + "2023-01-26, Order Canceled/Margin/Rejected\n", + "2023-01-26, Close, 23039.35\n", + "2023-01-26, Close, 22958.02\n", + "2023-01-26, Close, 23003.98\n", + "2023-01-26, Close, 22982.85\n", + "2023-01-26, Close, 23037.16\n", + "2023-01-26, Close, 23070.00\n", + "2023-01-26, BUY CREATE, 23070.00\n", + "2023-01-26, BUY EXECUTED, Price: 23068.57, Cost: 115342.85, Comm 0.00\n", + "2023-01-26, Close, 23112.57\n", + "2023-01-26, Close, 23081.77\n", + "2023-01-26, Close, 23003.79\n", + "2023-01-26, SELL CREATE, 23003.79\n", + "2023-01-26, SELL EXECUTED, Price: 23004.81, Cost: 115342.85, Comm 0.00\n", + "2023-01-26, OPERATION PROFIT, GROSS -318.80, NET -318.80\n", + "2023-01-26, Close, 23009.65\n", + "2023-01-27, Close, 22925.50\n", + "2023-01-27, Close, 22647.48\n", + "2023-01-27, Close, 22781.67\n", + "2023-01-27, Close, 22772.62\n", + "2023-01-27, Close, 22802.81\n", + "2023-01-27, Close, 23034.92\n", + "2023-01-27, BUY CREATE, 23034.92\n", + "2023-01-27, Order Canceled/Margin/Rejected\n", + "2023-01-27, Close, 23002.92\n", + "2023-01-27, BUY CREATE, 23002.92\n", + "2023-01-27, BUY EXECUTED, Price: 23002.48, Cost: 115012.40, Comm 0.00\n", + "2023-01-27, Close, 23072.77\n", + "2023-01-27, Close, 22964.51\n", + "2023-01-27, Close, 22947.87\n", + "2023-01-27, SELL CREATE, 22947.87\n", + "2023-01-27, SELL EXECUTED, Price: 22947.87, Cost: 115012.40, Comm 0.00\n", + "2023-01-27, OPERATION PROFIT, GROSS -273.05, NET -273.05\n", + "2023-01-27, Close, 22948.04\n", + "2023-01-27, BUY CREATE, 22948.04\n", + "2023-01-27, BUY EXECUTED, Price: 22948.98, Cost: 114744.90, Comm 0.00\n", + "2023-01-27, Close, 22967.47\n", + "2023-01-27, Close, 22932.41\n", + "2023-01-27, Close, 22899.82\n", + "2023-01-27, SELL CREATE, 22899.82\n", + "2023-01-27, SELL EXECUTED, Price: 22900.53, Cost: 114744.90, Comm 0.00\n", + "2023-01-27, OPERATION PROFIT, GROSS -242.25, NET -242.25\n", + "2023-01-27, Close, 22967.66\n", + "2023-01-27, BUY CREATE, 22967.66\n", + "2023-01-27, Order Canceled/Margin/Rejected\n", + "2023-01-27, Close, 22933.96\n", + "2023-01-27, BUY CREATE, 22933.96\n", + "2023-01-27, Order Canceled/Margin/Rejected\n", + "2023-01-27, Close, 23129.72\n", + "2023-01-27, BUY CREATE, 23129.72\n", + "2023-01-27, Order Canceled/Margin/Rejected\n", + "2023-01-27, Close, 23204.74\n", + "2023-01-27, BUY CREATE, 23204.74\n", + "2023-01-27, Order Canceled/Margin/Rejected\n", + "2023-01-27, Close, 23183.91\n", + "2023-01-27, BUY CREATE, 23183.91\n", + "2023-01-27, Order Canceled/Margin/Rejected\n", + "2023-01-27, Close, 23253.06\n", + "2023-01-27, BUY CREATE, 23253.06\n", + "2023-01-27, Order Canceled/Margin/Rejected\n", + "2023-01-27, Close, 23108.82\n", + "2023-01-27, BUY CREATE, 23108.82\n", + "2023-01-27, Order Canceled/Margin/Rejected\n", + "2023-01-27, Close, 23080.88\n", + "2023-01-27, BUY CREATE, 23080.88\n", + "2023-01-27, Order Canceled/Margin/Rejected\n", + "2023-01-27, Close, 23008.22\n", + "2023-01-27, Close, 23074.16\n", + "2023-01-27, BUY CREATE, 23074.16\n", + "2023-01-28, Order Canceled/Margin/Rejected\n", + "2023-01-28, Close, 23151.84\n", + "2023-01-28, BUY CREATE, 23151.84\n", + "2023-01-28, Order Canceled/Margin/Rejected\n", + "2023-01-28, Close, 23090.53\n", + "2023-01-28, BUY CREATE, 23090.53\n", + "2023-01-28, Order Canceled/Margin/Rejected\n", + "2023-01-28, Close, 23086.84\n", + "2023-01-28, BUY CREATE, 23086.84\n", + "2023-01-28, Order Canceled/Margin/Rejected\n", + "2023-01-28, Close, 23117.44\n", + "2023-01-28, BUY CREATE, 23117.44\n", + "2023-01-28, Order Canceled/Margin/Rejected\n", + "2023-01-28, Close, 23092.24\n", + "2023-01-28, Close, 23066.38\n", + "2023-01-28, Close, 23038.21\n", + "2023-01-28, Close, 22991.51\n", + "2023-01-28, Close, 22978.64\n", + "2023-01-28, Close, 22998.60\n", + "2023-01-28, Close, 22974.47\n", + "2023-01-28, Close, 22981.51\n", + "2023-01-28, Close, 22955.25\n", + "2023-01-28, Close, 22970.10\n", + "2023-01-28, Close, 22949.43\n", + "2023-01-28, Close, 23012.54\n", + "2023-01-28, Close, 23018.14\n", + "2023-01-28, BUY CREATE, 23018.14\n", + "2023-01-28, Order Canceled/Margin/Rejected\n", + "2023-01-28, Close, 23018.96\n", + "2023-01-28, BUY CREATE, 23018.96\n", + "2023-01-28, Order Canceled/Margin/Rejected\n", + "2023-01-28, Close, 22998.31\n", + "2023-01-28, Close, 23039.35\n", + "2023-01-28, BUY CREATE, 23039.35\n", + "2023-01-28, Order Canceled/Margin/Rejected\n", + "2023-01-28, Close, 22966.91\n", + "2023-01-28, Close, 23001.41\n", + "2023-01-28, BUY CREATE, 23001.41\n", + "2023-01-28, Order Canceled/Margin/Rejected\n", + "2023-01-28, Close, 22977.63\n", + "2023-01-28, Close, 23022.60\n", + "2023-01-28, BUY CREATE, 23022.60\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23112.95\n", + "2023-01-29, BUY CREATE, 23112.95\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23232.32\n", + "2023-01-29, BUY CREATE, 23232.32\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23143.08\n", + "2023-01-29, BUY CREATE, 23143.08\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23193.43\n", + "2023-01-29, BUY CREATE, 23193.43\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23228.89\n", + "2023-01-29, BUY CREATE, 23228.89\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23249.50\n", + "2023-01-29, BUY CREATE, 23249.50\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23198.58\n", + "2023-01-29, BUY CREATE, 23198.58\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23203.86\n", + "2023-01-29, BUY CREATE, 23203.86\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23172.28\n", + "2023-01-29, BUY CREATE, 23172.28\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23296.80\n", + "2023-01-29, BUY CREATE, 23296.80\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23448.03\n", + "2023-01-29, BUY CREATE, 23448.03\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23432.17\n", + "2023-01-29, BUY CREATE, 23432.17\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23478.21\n", + "2023-01-29, BUY CREATE, 23478.21\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23538.94\n", + "2023-01-29, BUY CREATE, 23538.94\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23538.58\n", + "2023-01-29, BUY CREATE, 23538.58\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23525.09\n", + "2023-01-29, BUY CREATE, 23525.09\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23586.44\n", + "2023-01-29, BUY CREATE, 23586.44\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23591.38\n", + "2023-01-29, BUY CREATE, 23591.38\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23678.99\n", + "2023-01-29, BUY CREATE, 23678.99\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23897.84\n", + "2023-01-29, BUY CREATE, 23897.84\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23698.65\n", + "2023-01-29, BUY CREATE, 23698.65\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23794.20\n", + "2023-01-29, BUY CREATE, 23794.20\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23765.93\n", + "2023-01-29, BUY CREATE, 23765.93\n", + "2023-01-29, Order Canceled/Margin/Rejected\n", + "2023-01-29, Close, 23742.30\n", + "2023-01-29, BUY CREATE, 23742.30\n", + "2023-01-30, Order Canceled/Margin/Rejected\n", + "2023-01-30, Close, 23751.43\n", + "2023-01-30, BUY CREATE, 23751.43\n", + "2023-01-30, Order Canceled/Margin/Rejected\n", + "2023-01-30, Close, 23670.08\n", + "2023-01-30, BUY CREATE, 23670.08\n", + "2023-01-30, Order Canceled/Margin/Rejected\n", + "2023-01-30, Close, 23645.76\n", + "2023-01-30, Close, 23701.44\n", + "2023-01-30, BUY CREATE, 23701.44\n", + "2023-01-30, Order Canceled/Margin/Rejected\n", + "2023-01-30, Close, 23717.76\n", + "2023-01-30, BUY CREATE, 23717.76\n", + "2023-01-30, Order Canceled/Margin/Rejected\n", + "2023-01-30, Close, 23728.71\n", + "2023-01-30, BUY CREATE, 23728.71\n", + "2023-01-30, Order Canceled/Margin/Rejected\n", + "2023-01-30, Close, 23692.38\n", + "2023-01-30, Close, 23642.81\n", + "2023-01-30, Close, 23548.76\n", + "2023-01-30, Close, 23191.20\n", + "2023-01-30, Close, 23243.54\n", + "2023-01-30, Close, 23077.47\n", + "2023-01-30, Close, 23076.27\n", + "2023-01-30, Close, 23057.19\n", + "2023-01-30, Close, 23287.70\n", + "2023-01-30, Close, 23178.51\n", + "2023-01-30, Close, 23170.38\n", + "2023-01-30, Close, 23108.94\n", + "2023-01-30, Close, 23138.83\n", + "2023-01-30, Close, 22784.86\n", + "2023-01-30, Close, 22697.83\n", + "2023-01-30, Close, 22743.70\n", + "2023-01-30, Close, 22729.81\n", + "2023-01-30, Close, 22826.15\n", + "2023-01-31, Close, 22828.32\n", + "2023-01-31, Close, 22830.23\n", + "2023-01-31, Close, 22857.93\n", + "2023-01-31, Close, 22835.01\n", + "2023-01-31, Close, 22861.59\n", + "2023-01-31, Close, 22759.14\n", + "2023-01-31, Close, 22812.12\n", + "2023-01-31, Close, 22978.24\n", + "2023-01-31, BUY CREATE, 22978.24\n", + "2023-01-31, Order Canceled/Margin/Rejected\n", + "2023-01-31, Close, 22912.62\n", + "2023-01-31, BUY CREATE, 22912.62\n", + "2023-01-31, BUY EXECUTED, Price: 22912.60, Cost: 114563.00, Comm 0.00\n", + "2023-01-31, Close, 22891.34\n", + "2023-01-31, Close, 22828.87\n", + "2023-01-31, Close, 22865.43\n", + "2023-01-31, Close, 22895.15\n", + "2023-01-31, Close, 23127.11\n", + "2023-01-31, Close, 23119.64\n", + "2023-01-31, Close, 23121.80\n", + "2023-01-31, Close, 23109.17\n", + "2023-01-31, Close, 23152.42\n", + "2023-01-31, Close, 23165.96\n", + "2023-01-31, Close, 23163.88\n", + "2023-01-31, Close, 23095.41\n", + "2023-01-31, Close, 22948.69\n", + "2023-01-31, SELL CREATE, 22948.69\n", + "2023-01-31, SELL EXECUTED, Price: 22947.66, Cost: 114563.00, Comm 0.00\n", + "2023-01-31, OPERATION PROFIT, GROSS 175.30, NET 175.30\n", + "2023-01-31, Close, 23181.81\n", + "2023-01-31, BUY CREATE, 23181.81\n", + "2023-01-31, Order Canceled/Margin/Rejected\n", + "2023-01-31, Close, 23125.13\n", + "2023-01-31, BUY CREATE, 23125.13\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23085.73\n", + "2023-02-01, BUY CREATE, 23085.73\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23123.09\n", + "2023-02-01, BUY CREATE, 23123.09\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23108.43\n", + "2023-02-01, BUY CREATE, 23108.43\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23130.19\n", + "2023-02-01, BUY CREATE, 23130.19\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23135.98\n", + "2023-02-01, BUY CREATE, 23135.98\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23118.67\n", + "2023-02-01, BUY CREATE, 23118.67\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23065.77\n", + "2023-02-01, Close, 23076.68\n", + "2023-02-01, Close, 22982.03\n", + "2023-02-01, Close, 22991.86\n", + "2023-02-01, Close, 22996.30\n", + "2023-02-01, Close, 23077.52\n", + "2023-02-01, BUY CREATE, 23077.52\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23060.63\n", + "2023-02-01, Close, 23086.10\n", + "2023-02-01, BUY CREATE, 23086.10\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23101.00\n", + "2023-02-01, BUY CREATE, 23101.00\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 22979.73\n", + "2023-02-01, Close, 22999.85\n", + "2023-02-01, Close, 22994.27\n", + "2023-02-01, Close, 23077.26\n", + "2023-02-01, BUY CREATE, 23077.26\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23385.99\n", + "2023-02-01, BUY CREATE, 23385.99\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23573.11\n", + "2023-02-01, BUY CREATE, 23573.11\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23681.05\n", + "2023-02-01, BUY CREATE, 23681.05\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23714.50\n", + "2023-02-01, BUY CREATE, 23714.50\n", + "2023-02-01, Order Canceled/Margin/Rejected\n", + "2023-02-01, Close, 23732.66\n", + "2023-02-01, BUY CREATE, 23732.66\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 24189.85\n", + "2023-02-02, BUY CREATE, 24189.85\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23950.55\n", + "2023-02-02, BUY CREATE, 23950.55\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23885.19\n", + "2023-02-02, BUY CREATE, 23885.19\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23848.60\n", + "2023-02-02, BUY CREATE, 23848.60\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23882.87\n", + "2023-02-02, BUY CREATE, 23882.87\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23804.61\n", + "2023-02-02, BUY CREATE, 23804.61\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23786.46\n", + "2023-02-02, BUY CREATE, 23786.46\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23781.12\n", + "2023-02-02, BUY CREATE, 23781.12\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23799.59\n", + "2023-02-02, BUY CREATE, 23799.59\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23830.91\n", + "2023-02-02, BUY CREATE, 23830.91\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23780.17\n", + "2023-02-02, Close, 23820.49\n", + "2023-02-02, Close, 23800.76\n", + "2023-02-02, Close, 23766.53\n", + "2023-02-02, Close, 23609.11\n", + "2023-02-02, Close, 23839.50\n", + "2023-02-02, BUY CREATE, 23839.50\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23790.35\n", + "2023-02-02, Close, 23893.33\n", + "2023-02-02, BUY CREATE, 23893.33\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 24054.54\n", + "2023-02-02, BUY CREATE, 24054.54\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23802.57\n", + "2023-02-02, Close, 23872.75\n", + "2023-02-02, BUY CREATE, 23872.75\n", + "2023-02-02, Order Canceled/Margin/Rejected\n", + "2023-02-02, Close, 23455.65\n", + "2023-02-02, Close, 23556.13\n", + "2023-02-02, Close, 23488.94\n", + "2023-02-03, Close, 23552.89\n", + "2023-02-03, Close, 23555.12\n", + "2023-02-03, Close, 23475.45\n", + "2023-02-03, Close, 23534.18\n", + "2023-02-03, Close, 23516.73\n", + "2023-02-03, Close, 23523.58\n", + "2023-02-03, Close, 23513.55\n", + "2023-02-03, Close, 23456.23\n", + "2023-02-03, Close, 23423.52\n", + "2023-02-03, Close, 23423.17\n", + "2023-02-03, Close, 23431.91\n", + "2023-02-03, Close, 23534.13\n", + "2023-02-03, BUY CREATE, 23534.13\n", + "2023-02-03, Order Canceled/Margin/Rejected\n", + "2023-02-03, Close, 23524.75\n", + "2023-02-03, BUY CREATE, 23524.75\n", + "2023-02-03, Order Canceled/Margin/Rejected\n", + "2023-02-03, Close, 23346.63\n", + "2023-02-03, Close, 23518.32\n", + "2023-02-03, BUY CREATE, 23518.32\n", + "2023-02-03, Order Canceled/Margin/Rejected\n", + "2023-02-03, Close, 23603.36\n", + "2023-02-03, BUY CREATE, 23603.36\n", + "2023-02-03, Order Canceled/Margin/Rejected\n", + "2023-02-03, Close, 23519.21\n", + "2023-02-03, BUY CREATE, 23519.21\n", + "2023-02-03, Order Canceled/Margin/Rejected\n", + "2023-02-03, Close, 23506.58\n", + "2023-02-03, BUY CREATE, 23506.58\n", + "2023-02-03, Order Canceled/Margin/Rejected\n", + "2023-02-03, Close, 23418.30\n", + "2023-02-03, Close, 23307.99\n", + "2023-02-03, Close, 23338.35\n", + "2023-02-03, Close, 23379.01\n", + "2023-02-03, Close, 23421.02\n", + "2023-02-03, Close, 23431.90\n", + "2023-02-04, Close, 23411.30\n", + "2023-02-04, Close, 23373.87\n", + "2023-02-04, Close, 23386.89\n", + "2023-02-04, Close, 23343.43\n", + "2023-02-04, Close, 23337.71\n", + "2023-02-04, Close, 23312.38\n", + "2023-02-04, Close, 23338.23\n", + "2023-02-04, Close, 23329.18\n", + "2023-02-04, Close, 23297.59\n", + "2023-02-04, Close, 23340.02\n", + "2023-02-04, Close, 23335.83\n", + "2023-02-04, Close, 23363.76\n", + "2023-02-04, BUY CREATE, 23363.76\n", + "2023-02-04, Order Canceled/Margin/Rejected\n", + "2023-02-04, Close, 23412.84\n", + "2023-02-04, BUY CREATE, 23412.84\n", + "2023-02-04, Order Canceled/Margin/Rejected\n", + "2023-02-04, Close, 23503.73\n", + "2023-02-04, BUY CREATE, 23503.73\n", + "2023-02-04, Order Canceled/Margin/Rejected\n", + "2023-02-04, Close, 23464.36\n", + "2023-02-04, BUY CREATE, 23464.36\n", + "2023-02-04, Order Canceled/Margin/Rejected\n", + "2023-02-04, Close, 23421.45\n", + "2023-02-04, BUY CREATE, 23421.45\n", + "2023-02-04, Order Canceled/Margin/Rejected\n", + "2023-02-04, Close, 23407.83\n", + "2023-02-04, BUY CREATE, 23407.83\n", + "2023-02-04, Order Canceled/Margin/Rejected\n", + "2023-02-04, Close, 23439.63\n", + "2023-02-04, BUY CREATE, 23439.63\n", + "2023-02-04, Order Canceled/Margin/Rejected\n", + "2023-02-04, Close, 23445.66\n", + "2023-02-04, BUY CREATE, 23445.66\n", + "2023-02-04, Order Canceled/Margin/Rejected\n", + "2023-02-04, Close, 23425.89\n", + "2023-02-04, BUY CREATE, 23425.89\n", + "2023-02-04, Order Canceled/Margin/Rejected\n", + "2023-02-04, Close, 23412.48\n", + "2023-02-04, BUY CREATE, 23412.48\n", + "2023-02-04, Order Canceled/Margin/Rejected\n", + "2023-02-04, Close, 23413.98\n", + "2023-02-04, BUY CREATE, 23413.98\n", + "2023-02-04, Order Canceled/Margin/Rejected\n", + "2023-02-04, Close, 23402.89\n", + "2023-02-04, Close, 23326.84\n", + "2023-02-05, Close, 23291.00\n", + "2023-02-05, Close, 23319.48\n", + "2023-02-05, Close, 23292.21\n", + "2023-02-05, Close, 23344.53\n", + "2023-02-05, Close, 23364.00\n", + "2023-02-05, Close, 23375.60\n", + "2023-02-05, Close, 23392.80\n", + "2023-02-05, BUY CREATE, 23392.80\n", + "2023-02-05, Order Canceled/Margin/Rejected\n", + "2023-02-05, Close, 23377.40\n", + "2023-02-05, BUY CREATE, 23377.40\n", + "2023-02-05, Order Canceled/Margin/Rejected\n", + "2023-02-05, Close, 23393.26\n", + "2023-02-05, BUY CREATE, 23393.26\n", + "2023-02-05, Order Canceled/Margin/Rejected\n", + "2023-02-05, Close, 23365.02\n", + "2023-02-05, Close, 23395.57\n", + "2023-02-05, BUY CREATE, 23395.57\n", + "2023-02-05, Order Canceled/Margin/Rejected\n", + "2023-02-05, Close, 23356.33\n", + "2023-02-05, Close, 23170.56\n", + "2023-02-05, Close, 23167.62\n", + "2023-02-05, Close, 23163.45\n", + "2023-02-05, Close, 23096.16\n", + "2023-02-05, Close, 23075.54\n", + "2023-02-05, Close, 22851.48\n", + "2023-02-05, Close, 22843.92\n", + "2023-02-05, Close, 22891.80\n", + "2023-02-05, Close, 22886.30\n", + "2023-02-05, Close, 22896.41\n", + "2023-02-05, Close, 22979.51\n", + "2023-02-05, Close, 22932.91\n", + "2023-02-06, Close, 23054.44\n", + "2023-02-06, BUY CREATE, 23054.44\n", + "2023-02-06, Order Canceled/Margin/Rejected\n", + "2023-02-06, Close, 22978.08\n", + "2023-02-06, Close, 22877.82\n", + "2023-02-06, Close, 22895.48\n", + "2023-02-06, Close, 22873.12\n", + "2023-02-06, Close, 22774.76\n", + "2023-02-06, Close, 22783.44\n", + "2023-02-06, Close, 22879.69\n", + "2023-02-06, Close, 22862.99\n", + "2023-02-06, Close, 22837.98\n", + "2023-02-06, Close, 22842.41\n", + "2023-02-06, Close, 22878.23\n", + "2023-02-06, Close, 22885.94\n", + "2023-02-06, Close, 22828.79\n", + "2023-02-06, Close, 22842.47\n", + "2023-02-06, Close, 23041.39\n", + "2023-02-06, BUY CREATE, 23041.39\n", + "2023-02-06, Order Canceled/Margin/Rejected\n", + "2023-02-06, Close, 22999.62\n", + "2023-02-06, BUY CREATE, 22999.62\n", + "2023-02-06, Order Canceled/Margin/Rejected\n", + "2023-02-06, Close, 23035.78\n", + "2023-02-06, BUY CREATE, 23035.78\n", + "2023-02-06, Order Canceled/Margin/Rejected\n", + "2023-02-06, Close, 23018.13\n", + "2023-02-06, BUY CREATE, 23018.13\n", + "2023-02-06, Order Canceled/Margin/Rejected\n", + "2023-02-06, Close, 23031.03\n", + "2023-02-06, BUY CREATE, 23031.03\n", + "2023-02-06, Order Canceled/Margin/Rejected\n", + "2023-02-06, Close, 23005.84\n", + "2023-02-06, BUY CREATE, 23005.84\n", + "2023-02-06, Order Canceled/Margin/Rejected\n", + "2023-02-06, Close, 22915.05\n", + "2023-02-06, Close, 22879.37\n", + "2023-02-06, Close, 22762.52\n", + "2023-02-07, Close, 22795.13\n", + "2023-02-07, Close, 22849.16\n", + "2023-02-07, Close, 22883.71\n", + "2023-02-07, Close, 22877.99\n", + "2023-02-07, Close, 22870.35\n", + "2023-02-07, Close, 22936.72\n", + "2023-02-07, BUY CREATE, 22936.72\n", + "2023-02-07, BUY EXECUTED, Price: 22935.92, Cost: 114679.60, Comm 0.00\n", + "2023-02-07, Close, 22927.38\n", + "2023-02-07, Close, 22910.91\n", + "2023-02-07, SELL CREATE, 22910.91\n", + "2023-02-07, SELL EXECUTED, Price: 22910.91, Cost: 114679.60, Comm 0.00\n", + "2023-02-07, OPERATION PROFIT, GROSS -125.05, NET -125.05\n", + "2023-02-07, Close, 22872.67\n", + "2023-02-07, Close, 23011.79\n", + "2023-02-07, BUY CREATE, 23011.79\n", + "2023-02-07, Order Canceled/Margin/Rejected\n", + "2023-02-07, Close, 22983.51\n", + "2023-02-07, BUY CREATE, 22983.51\n", + "2023-02-07, Order Canceled/Margin/Rejected\n", + "2023-02-07, Close, 22977.24\n", + "2023-02-07, BUY CREATE, 22977.24\n", + "2023-02-07, Order Canceled/Margin/Rejected\n", + "2023-02-07, Close, 23023.67\n", + "2023-02-07, BUY CREATE, 23023.67\n", + "2023-02-07, Order Canceled/Margin/Rejected\n", + "2023-02-07, Close, 22982.54\n", + "2023-02-07, BUY CREATE, 22982.54\n", + "2023-02-07, Order Canceled/Margin/Rejected\n", + "2023-02-07, Close, 22976.86\n", + "2023-02-07, BUY CREATE, 22976.86\n", + "2023-02-07, Order Canceled/Margin/Rejected\n", + "2023-02-07, Close, 22904.89\n", + "2023-02-07, Close, 22977.98\n", + "2023-02-07, BUY CREATE, 22977.98\n", + "2023-02-07, Order Canceled/Margin/Rejected\n", + "2023-02-07, Close, 23282.92\n", + "2023-02-07, BUY CREATE, 23282.92\n", + "2023-02-07, Order Canceled/Margin/Rejected\n", + "2023-02-07, Close, 22932.28\n", + "2023-02-07, Close, 23091.90\n", + "2023-02-07, BUY CREATE, 23091.90\n", + "2023-02-07, Order Canceled/Margin/Rejected\n", + "2023-02-07, Close, 23194.36\n", + "2023-02-07, BUY CREATE, 23194.36\n", + "2023-02-07, Order Canceled/Margin/Rejected\n", + "2023-02-07, Close, 23196.25\n", + "2023-02-07, BUY CREATE, 23196.25\n", + "2023-02-07, Order Canceled/Margin/Rejected\n", + "2023-02-07, Close, 23228.69\n", + "2023-02-07, BUY CREATE, 23228.69\n", + "2023-02-07, Order Canceled/Margin/Rejected\n", + "2023-02-07, Close, 23240.46\n", + "2023-02-07, BUY CREATE, 23240.46\n", + "2023-02-08, Order Canceled/Margin/Rejected\n", + "2023-02-08, Close, 23326.40\n", + "2023-02-08, BUY CREATE, 23326.40\n", + "2023-02-08, Order Canceled/Margin/Rejected\n", + "2023-02-08, Close, 23287.66\n", + "2023-02-08, BUY CREATE, 23287.66\n", + "2023-02-08, Order Canceled/Margin/Rejected\n", + "2023-02-08, Close, 23244.60\n", + "2023-02-08, BUY CREATE, 23244.60\n", + "2023-02-08, Order Canceled/Margin/Rejected\n", + "2023-02-08, Close, 23255.34\n", + "2023-02-08, BUY CREATE, 23255.34\n", + "2023-02-08, Order Canceled/Margin/Rejected\n", + "2023-02-08, Close, 23246.71\n", + "2023-02-08, BUY CREATE, 23246.71\n", + "2023-02-08, Order Canceled/Margin/Rejected\n", + "2023-02-08, Close, 23224.39\n", + "2023-02-08, BUY CREATE, 23224.39\n", + "2023-02-08, Order Canceled/Margin/Rejected\n", + "2023-02-08, Close, 23198.27\n", + "2023-02-08, BUY CREATE, 23198.27\n", + "2023-02-08, Order Canceled/Margin/Rejected\n", + "2023-02-08, Close, 23232.68\n", + "2023-02-08, BUY CREATE, 23232.68\n", + "2023-02-08, Order Canceled/Margin/Rejected\n", + "2023-02-08, Close, 23205.96\n", + "2023-02-08, Close, 23202.90\n", + "2023-02-08, Close, 23159.81\n", + "2023-02-08, Close, 23159.07\n", + "2023-02-08, Close, 23123.44\n", + "2023-02-08, Close, 23114.88\n", + "2023-02-08, Close, 23051.91\n", + "2023-02-08, Close, 22872.28\n", + "2023-02-08, Close, 22966.30\n", + "2023-02-08, Close, 23004.04\n", + "2023-02-08, Close, 22893.03\n", + "2023-02-08, Close, 22874.89\n", + "2023-02-08, Close, 22829.87\n", + "2023-02-08, Close, 22955.37\n", + "2023-02-08, Close, 22928.75\n", + "2023-02-08, Close, 22963.00\n", + "2023-02-09, Close, 22980.64\n", + "2023-02-09, Close, 22948.13\n", + "2023-02-09, Close, 22806.76\n", + "2023-02-09, Close, 22518.44\n", + "2023-02-09, Close, 22568.57\n", + "2023-02-09, Close, 22603.08\n", + "2023-02-09, Close, 22719.25\n", + "2023-02-09, Close, 22676.41\n", + "2023-02-09, Close, 22720.65\n", + "2023-02-09, Close, 22738.69\n", + "2023-02-09, Close, 22698.53\n", + "2023-02-09, Close, 22685.79\n", + "2023-02-09, Close, 22705.50\n", + "2023-02-09, Close, 22747.58\n", + "2023-02-09, BUY CREATE, 22747.58\n", + "2023-02-09, BUY EXECUTED, Price: 22747.58, Cost: 113737.90, Comm 0.00\n", + "2023-02-09, Close, 22694.29\n", + "2023-02-09, SELL CREATE, 22694.29\n", + "2023-02-09, SELL EXECUTED, Price: 22693.22, Cost: 113737.90, Comm 0.00\n", + "2023-02-09, OPERATION PROFIT, GROSS -271.80, NET -271.80\n", + "2023-02-09, Close, 22610.94\n", + "2023-02-09, Close, 22511.80\n", + "2023-02-09, Close, 22537.33\n", + "2023-02-09, Close, 22514.75\n", + "2023-02-09, Close, 22032.71\n", + "2023-02-09, Close, 21994.21\n", + "2023-02-09, Close, 21856.30\n", + "2023-02-09, Close, 21767.53\n", + "2023-02-09, Close, 21796.35\n", + "2023-02-10, Close, 21824.09\n", + "2023-02-10, Close, 21894.16\n", + "2023-02-10, Close, 21917.77\n", + "2023-02-10, Close, 21825.59\n", + "2023-02-10, Close, 21786.08\n", + "2023-02-10, Close, 21796.78\n", + "2023-02-10, Close, 21874.73\n", + "2023-02-10, Close, 21911.71\n", + "2023-02-10, Close, 21889.38\n", + "2023-02-10, Close, 21820.23\n", + "2023-02-10, Close, 21849.38\n", + "2023-02-10, Close, 21733.52\n", + "2023-02-10, Close, 21718.48\n", + "2023-02-10, Close, 21767.87\n", + "2023-02-10, Close, 21841.55\n", + "2023-02-10, BUY CREATE, 21841.55\n", + "2023-02-10, BUY EXECUTED, Price: 21841.31, Cost: 109206.55, Comm 0.00\n", + "2023-02-10, Close, 21654.09\n", + "2023-02-10, SELL CREATE, 21654.09\n", + "2023-02-10, SELL EXECUTED, Price: 21652.75, Cost: 109206.55, Comm 0.00\n", + "2023-02-10, OPERATION PROFIT, GROSS -942.80, NET -942.80\n", + "2023-02-10, Close, 21607.11\n", + "2023-02-10, Close, 21692.07\n", + "2023-02-10, Close, 21703.90\n", + "2023-02-10, Close, 21771.09\n", + "2023-02-10, Close, 21724.40\n", + "2023-02-10, Close, 21536.31\n", + "2023-02-10, Close, 21571.19\n", + "2023-02-10, Close, 21625.19\n", + "2023-02-11, Close, 21657.62\n", + "2023-02-11, Close, 21635.49\n", + "2023-02-11, Close, 21652.20\n", + "2023-02-11, Close, 21678.56\n", + "2023-02-11, BUY CREATE, 21678.56\n", + "2023-02-11, BUY EXECUTED, Price: 21678.56, Cost: 108392.80, Comm 0.00\n", + "2023-02-11, Close, 21686.79\n", + "2023-02-11, Close, 21675.26\n", + "2023-02-11, Close, 21669.73\n", + "2023-02-11, Close, 21692.63\n", + "2023-02-11, Close, 21687.29\n", + "2023-02-11, Close, 21698.37\n", + "2023-02-11, Close, 21670.32\n", + "2023-02-11, Close, 21697.44\n", + "2023-02-11, Close, 21713.77\n", + "2023-02-11, Close, 21747.49\n", + "2023-02-11, Close, 21751.04\n", + "2023-02-11, Close, 21735.78\n", + "2023-02-11, Close, 21693.14\n", + "2023-02-11, SELL CREATE, 21693.14\n", + "2023-02-11, SELL EXECUTED, Price: 21693.48, Cost: 108392.80, Comm 0.00\n", + "2023-02-11, OPERATION PROFIT, GROSS 74.60, NET 74.60\n", + "2023-02-11, Close, 21698.86\n", + "2023-02-11, Close, 21654.03\n", + "2023-02-11, Close, 21662.63\n", + "2023-02-11, Close, 21671.38\n", + "2023-02-11, Close, 21823.56\n", + "2023-02-11, BUY CREATE, 21823.56\n", + "2023-02-11, BUY EXECUTED, Price: 21823.56, Cost: 109117.80, Comm 0.00\n", + "2023-02-11, Close, 21824.52\n", + "2023-02-11, Close, 21862.55\n", + "2023-02-12, Close, 21816.37\n", + "2023-02-12, Close, 21808.28\n", + "2023-02-12, Close, 21816.22\n", + "2023-02-12, Close, 21781.38\n", + "2023-02-12, Close, 21782.97\n", + "2023-02-12, Close, 21799.98\n", + "2023-02-12, Close, 21809.62\n", + "2023-02-12, Close, 21798.42\n", + "2023-02-12, Close, 21804.89\n", + "2023-02-12, Close, 21907.00\n", + "2023-02-12, Close, 21880.47\n", + "2023-02-12, Close, 21888.31\n", + "2023-02-12, Close, 21821.60\n", + "2023-02-12, SELL CREATE, 21821.60\n", + "2023-02-12, SELL EXECUTED, Price: 21820.70, Cost: 109117.80, Comm 0.00\n", + "2023-02-12, OPERATION PROFIT, GROSS -14.30, NET -14.30\n", + "2023-02-12, Close, 21817.51\n", + "2023-02-12, Close, 21923.78\n", + "2023-02-12, BUY CREATE, 21923.78\n", + "2023-02-12, BUY EXECUTED, Price: 21923.78, Cost: 109618.90, Comm 0.00\n", + "2023-02-12, Close, 21945.30\n", + "2023-02-12, Close, 22004.65\n", + "2023-02-12, Close, 21988.25\n", + "2023-02-12, Close, 21971.86\n", + "2023-02-12, Close, 21997.18\n", + "2023-02-12, Close, 21968.06\n", + "2023-02-12, Close, 21738.38\n", + "2023-02-12, SELL CREATE, 21738.38\n", + "2023-02-12, SELL EXECUTED, Price: 21738.38, Cost: 109618.90, Comm 0.00\n", + "2023-02-12, OPERATION PROFIT, GROSS -927.00, NET -927.00\n", + "2023-02-12, Close, 21794.52\n", + "2023-02-12, Close, 21783.54\n", + "2023-02-13, Close, 21811.28\n", + "2023-02-13, Close, 21708.40\n", + "2023-02-13, Close, 21758.01\n", + "2023-02-13, Close, 21808.60\n", + "2023-02-13, Close, 21838.38\n", + "2023-02-13, Close, 21832.95\n", + "2023-02-13, Close, 21823.04\n", + "2023-02-13, Close, 21867.69\n", + "2023-02-13, BUY CREATE, 21867.69\n", + "2023-02-13, BUY EXECUTED, Price: 21867.74, Cost: 109338.70, Comm 0.00\n", + "2023-02-13, Close, 21720.67\n", + "2023-02-13, SELL CREATE, 21720.67\n", + "2023-02-13, SELL EXECUTED, Price: 21722.00, Cost: 109338.70, Comm 0.00\n", + "2023-02-13, OPERATION PROFIT, GROSS -728.70, NET -728.70\n", + "2023-02-13, Close, 21584.74\n", + "2023-02-13, Close, 21594.16\n", + "2023-02-13, Close, 21603.11\n", + "2023-02-13, Close, 21657.47\n", + "2023-02-13, Close, 21572.88\n", + "2023-02-13, Close, 21669.64\n", + "2023-02-13, Close, 21563.02\n", + "2023-02-13, Close, 21503.76\n", + "2023-02-13, Close, 21458.38\n", + "2023-02-13, Close, 21634.60\n", + "2023-02-13, Close, 21607.81\n", + "2023-02-13, Close, 21662.68\n", + "2023-02-13, BUY CREATE, 21662.68\n", + "2023-02-13, BUY EXECUTED, Price: 21663.57, Cost: 108317.85, Comm 0.00\n", + "2023-02-13, Close, 21614.52\n", + "2023-02-13, SELL CREATE, 21614.52\n", + "2023-02-13, SELL EXECUTED, Price: 21614.52, Cost: 108317.85, Comm 0.00\n", + "2023-02-13, OPERATION PROFIT, GROSS -245.25, NET -245.25\n", + "2023-02-13, Close, 21640.37\n", + "2023-02-13, BUY CREATE, 21640.37\n", + "2023-02-13, BUY EXECUTED, Price: 21641.27, Cost: 108206.35, Comm 0.00\n", + "2023-02-13, Close, 21773.97\n", + "2023-02-14, Close, 21737.95\n", + "2023-02-14, Close, 21707.11\n", + "2023-02-14, Close, 21716.23\n", + "2023-02-14, Close, 21700.42\n", + "2023-02-14, Close, 21704.95\n", + "2023-02-14, Close, 21725.23\n", + "2023-02-14, Close, 21744.02\n", + "2023-02-14, Close, 21768.48\n", + "2023-02-14, Close, 21694.92\n", + "2023-02-14, SELL CREATE, 21694.92\n", + "2023-02-14, SELL EXECUTED, Price: 21694.92, Cost: 108206.35, Comm 0.00\n", + "2023-02-14, OPERATION PROFIT, GROSS 268.25, NET 268.25\n", + "2023-02-14, Close, 21817.09\n", + "2023-02-14, BUY CREATE, 21817.09\n", + "2023-02-14, BUY EXECUTED, Price: 21817.73, Cost: 109088.65, Comm 0.00\n", + "2023-02-14, Close, 21809.49\n", + "2023-02-14, Close, 21809.81\n", + "2023-02-14, Close, 21859.32\n", + "2023-02-14, Close, 21720.09\n", + "2023-02-14, SELL CREATE, 21720.09\n", + "2023-02-14, SELL EXECUTED, Price: 21719.05, Cost: 109088.65, Comm 0.00\n", + "2023-02-14, OPERATION PROFIT, GROSS -493.40, NET -493.40\n", + "2023-02-14, Close, 22247.39\n", + "2023-02-14, BUY CREATE, 22247.39\n", + "2023-02-14, BUY EXECUTED, Price: 22247.39, Cost: 111236.95, Comm 0.00\n", + "2023-02-14, Close, 22041.45\n", + "2023-02-14, Close, 22008.36\n", + "2023-02-14, Close, 22050.16\n", + "2023-02-14, Close, 22114.15\n", + "2023-02-14, Close, 22208.65\n", + "2023-02-14, Close, 22252.94\n", + "2023-02-14, Close, 22241.14\n", + "2023-02-14, Close, 22187.69\n", + "2023-02-14, Close, 22199.84\n", + "2023-02-15, Close, 22149.74\n", + "2023-02-15, Close, 22109.62\n", + "2023-02-15, Close, 22072.85\n", + "2023-02-15, SELL CREATE, 22072.85\n", + "2023-02-15, SELL EXECUTED, Price: 22072.24, Cost: 111236.95, Comm 0.00\n", + "2023-02-15, OPERATION PROFIT, GROSS -875.75, NET -875.75\n", + "2023-02-15, Close, 22099.49\n", + "2023-02-15, Close, 22084.90\n", + "2023-02-15, Close, 22134.08\n", + "2023-02-15, BUY CREATE, 22134.08\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 22117.68\n", + "2023-02-15, Close, 22109.89\n", + "2023-02-15, Close, 22094.02\n", + "2023-02-15, Close, 22170.51\n", + "2023-02-15, BUY CREATE, 22170.51\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 22234.96\n", + "2023-02-15, BUY CREATE, 22234.96\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 22445.13\n", + "2023-02-15, BUY CREATE, 22445.13\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 22772.21\n", + "2023-02-15, BUY CREATE, 22772.21\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 22698.86\n", + "2023-02-15, BUY CREATE, 22698.86\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 22684.47\n", + "2023-02-15, BUY CREATE, 22684.47\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 22809.46\n", + "2023-02-15, BUY CREATE, 22809.46\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 22763.10\n", + "2023-02-15, BUY CREATE, 22763.10\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 22805.48\n", + "2023-02-15, BUY CREATE, 22805.48\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 22973.86\n", + "2023-02-15, BUY CREATE, 22973.86\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 23318.90\n", + "2023-02-15, BUY CREATE, 23318.90\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 24145.04\n", + "2023-02-15, BUY CREATE, 24145.04\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 24175.86\n", + "2023-02-15, BUY CREATE, 24175.86\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 24151.60\n", + "2023-02-15, BUY CREATE, 24151.60\n", + "2023-02-15, Order Canceled/Margin/Rejected\n", + "2023-02-15, Close, 24324.05\n", + "2023-02-15, BUY CREATE, 24324.05\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24583.17\n", + "2023-02-16, BUY CREATE, 24583.17\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24627.17\n", + "2023-02-16, BUY CREATE, 24627.17\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24687.88\n", + "2023-02-16, BUY CREATE, 24687.88\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24732.42\n", + "2023-02-16, BUY CREATE, 24732.42\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24634.15\n", + "2023-02-16, BUY CREATE, 24634.15\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24681.94\n", + "2023-02-16, BUY CREATE, 24681.94\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24586.08\n", + "2023-02-16, BUY CREATE, 24586.08\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24612.95\n", + "2023-02-16, BUY CREATE, 24612.95\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24580.34\n", + "2023-02-16, BUY CREATE, 24580.34\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24643.64\n", + "2023-02-16, BUY CREATE, 24643.64\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24617.72\n", + "2023-02-16, BUY CREATE, 24617.72\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24568.55\n", + "2023-02-16, BUY CREATE, 24568.55\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24585.55\n", + "2023-02-16, BUY CREATE, 24585.55\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24445.81\n", + "2023-02-16, Close, 24423.80\n", + "2023-02-16, Close, 25072.67\n", + "2023-02-16, BUY CREATE, 25072.67\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24898.43\n", + "2023-02-16, BUY CREATE, 24898.43\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24891.88\n", + "2023-02-16, BUY CREATE, 24891.88\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24971.47\n", + "2023-02-16, BUY CREATE, 24971.47\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24872.58\n", + "2023-02-16, BUY CREATE, 24872.58\n", + "2023-02-16, Order Canceled/Margin/Rejected\n", + "2023-02-16, Close, 24565.36\n", + "2023-02-16, Close, 24537.04\n", + "2023-02-16, Close, 23994.76\n", + "2023-02-16, Close, 23517.72\n", + "2023-02-17, Close, 23713.37\n", + "2023-02-17, Close, 23849.87\n", + "2023-02-17, Close, 23772.31\n", + "2023-02-17, Close, 23838.64\n", + "2023-02-17, Close, 23805.15\n", + "2023-02-17, Close, 23707.55\n", + "2023-02-17, Close, 23668.10\n", + "2023-02-17, Close, 23637.04\n", + "2023-02-17, Close, 23797.21\n", + "2023-02-17, Close, 23743.22\n", + "2023-02-17, Close, 23753.42\n", + "2023-02-17, Close, 23789.82\n", + "2023-02-17, Close, 23869.46\n", + "2023-02-17, BUY CREATE, 23869.46\n", + "2023-02-17, Order Canceled/Margin/Rejected\n", + "2023-02-17, Close, 23782.23\n", + "2023-02-17, BUY CREATE, 23782.23\n", + "2023-02-17, Order Canceled/Margin/Rejected\n", + "2023-02-17, Close, 23865.86\n", + "2023-02-17, BUY CREATE, 23865.86\n", + "2023-02-17, Order Canceled/Margin/Rejected\n", + "2023-02-17, Close, 24130.50\n", + "2023-02-17, BUY CREATE, 24130.50\n", + "2023-02-17, Order Canceled/Margin/Rejected\n", + "2023-02-17, Close, 24091.21\n", + "2023-02-17, BUY CREATE, 24091.21\n", + "2023-02-17, Order Canceled/Margin/Rejected\n", + "2023-02-17, Close, 24298.35\n", + "2023-02-17, BUY CREATE, 24298.35\n", + "2023-02-17, Order Canceled/Margin/Rejected\n", + "2023-02-17, Close, 24360.66\n", + "2023-02-17, BUY CREATE, 24360.66\n", + "2023-02-17, Order Canceled/Margin/Rejected\n", + "2023-02-17, Close, 24524.49\n", + "2023-02-17, BUY CREATE, 24524.49\n", + "2023-02-17, Order Canceled/Margin/Rejected\n", + "2023-02-17, Close, 24820.92\n", + "2023-02-17, BUY CREATE, 24820.92\n", + "2023-02-17, Order Canceled/Margin/Rejected\n", + "2023-02-17, Close, 24476.42\n", + "2023-02-17, BUY CREATE, 24476.42\n", + "2023-02-17, Order Canceled/Margin/Rejected\n", + "2023-02-17, Close, 24679.14\n", + "2023-02-17, BUY CREATE, 24679.14\n", + "2023-02-17, Order Canceled/Margin/Rejected\n", + "2023-02-17, Close, 24569.97\n", + "2023-02-17, BUY CREATE, 24569.97\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24632.74\n", + "2023-02-18, BUY CREATE, 24632.74\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24660.14\n", + "2023-02-18, BUY CREATE, 24660.14\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24555.86\n", + "2023-02-18, BUY CREATE, 24555.86\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24609.68\n", + "2023-02-18, BUY CREATE, 24609.68\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24624.01\n", + "2023-02-18, BUY CREATE, 24624.01\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24641.42\n", + "2023-02-18, BUY CREATE, 24641.42\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24626.66\n", + "2023-02-18, BUY CREATE, 24626.66\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24519.01\n", + "2023-02-18, Close, 24588.51\n", + "2023-02-18, Close, 24553.04\n", + "2023-02-18, Close, 24456.81\n", + "2023-02-18, Close, 24519.42\n", + "2023-02-18, Close, 24620.33\n", + "2023-02-18, BUY CREATE, 24620.33\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24581.77\n", + "2023-02-18, Close, 24691.13\n", + "2023-02-18, BUY CREATE, 24691.13\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24668.26\n", + "2023-02-18, BUY CREATE, 24668.26\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24642.84\n", + "2023-02-18, BUY CREATE, 24642.84\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24686.00\n", + "2023-02-18, BUY CREATE, 24686.00\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24710.54\n", + "2023-02-18, BUY CREATE, 24710.54\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24608.34\n", + "2023-02-18, BUY CREATE, 24608.34\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24594.70\n", + "2023-02-18, Close, 24615.83\n", + "2023-02-18, BUY CREATE, 24615.83\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24627.32\n", + "2023-02-18, BUY CREATE, 24627.32\n", + "2023-02-18, Order Canceled/Margin/Rejected\n", + "2023-02-18, Close, 24631.95\n", + "2023-02-18, BUY CREATE, 24631.95\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24739.25\n", + "2023-02-19, BUY CREATE, 24739.25\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24707.49\n", + "2023-02-19, BUY CREATE, 24707.49\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24683.57\n", + "2023-02-19, BUY CREATE, 24683.57\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24681.69\n", + "2023-02-19, BUY CREATE, 24681.69\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24712.85\n", + "2023-02-19, BUY CREATE, 24712.85\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24757.63\n", + "2023-02-19, BUY CREATE, 24757.63\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24628.59\n", + "2023-02-19, Close, 24582.62\n", + "2023-02-19, Close, 24569.06\n", + "2023-02-19, Close, 24599.42\n", + "2023-02-19, Close, 24654.81\n", + "2023-02-19, BUY CREATE, 24654.81\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24669.43\n", + "2023-02-19, BUY CREATE, 24669.43\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24696.68\n", + "2023-02-19, BUY CREATE, 24696.68\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24669.99\n", + "2023-02-19, BUY CREATE, 24669.99\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24758.60\n", + "2023-02-19, BUY CREATE, 24758.60\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24922.21\n", + "2023-02-19, BUY CREATE, 24922.21\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24777.62\n", + "2023-02-19, BUY CREATE, 24777.62\n", + "2023-02-19, Order Canceled/Margin/Rejected\n", + "2023-02-19, Close, 24361.74\n", + "2023-02-19, Close, 24464.45\n", + "2023-02-19, Close, 24523.79\n", + "2023-02-19, Close, 24518.52\n", + "2023-02-19, Close, 24541.08\n", + "2023-02-19, Close, 24491.15\n", + "2023-02-19, Close, 24271.76\n", + "2023-02-20, Close, 24211.07\n", + "2023-02-20, Close, 24236.97\n", + "2023-02-20, Close, 24344.03\n", + "2023-02-20, Close, 24418.95\n", + "2023-02-20, Close, 24484.26\n", + "2023-02-20, Close, 24492.32\n", + "2023-02-20, BUY CREATE, 24492.32\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24501.55\n", + "2023-02-20, BUY CREATE, 24501.55\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24503.65\n", + "2023-02-20, BUY CREATE, 24503.65\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24459.14\n", + "2023-02-20, BUY CREATE, 24459.14\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24884.30\n", + "2023-02-20, BUY CREATE, 24884.30\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24907.56\n", + "2023-02-20, BUY CREATE, 24907.56\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24890.00\n", + "2023-02-20, BUY CREATE, 24890.00\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24815.98\n", + "2023-02-20, BUY CREATE, 24815.98\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24855.25\n", + "2023-02-20, BUY CREATE, 24855.25\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24971.00\n", + "2023-02-20, BUY CREATE, 24971.00\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24942.87\n", + "2023-02-20, BUY CREATE, 24942.87\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24884.20\n", + "2023-02-20, BUY CREATE, 24884.20\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24810.05\n", + "2023-02-20, BUY CREATE, 24810.05\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24819.67\n", + "2023-02-20, BUY CREATE, 24819.67\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24872.19\n", + "2023-02-20, BUY CREATE, 24872.19\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24800.92\n", + "2023-02-20, BUY CREATE, 24800.92\n", + "2023-02-20, Order Canceled/Margin/Rejected\n", + "2023-02-20, Close, 24769.57\n", + "2023-02-20, Close, 24704.52\n", + "2023-02-20, Close, 24842.20\n", + "2023-02-21, Close, 24858.60\n", + "2023-02-21, BUY CREATE, 24858.60\n", + "2023-02-21, Order Canceled/Margin/Rejected\n", + "2023-02-21, Close, 24863.71\n", + "2023-02-21, BUY CREATE, 24863.71\n", + "2023-02-21, Order Canceled/Margin/Rejected\n", + "2023-02-21, Close, 24911.51\n", + "2023-02-21, BUY CREATE, 24911.51\n", + "2023-02-21, Order Canceled/Margin/Rejected\n", + "2023-02-21, Close, 24926.56\n", + "2023-02-21, BUY CREATE, 24926.56\n", + "2023-02-21, Order Canceled/Margin/Rejected\n", + "2023-02-21, Close, 24904.14\n", + "2023-02-21, BUY CREATE, 24904.14\n", + "2023-02-21, Order Canceled/Margin/Rejected\n", + "2023-02-21, Close, 24945.37\n", + "2023-02-21, BUY CREATE, 24945.37\n", + "2023-02-21, Order Canceled/Margin/Rejected\n", + "2023-02-21, Close, 25032.42\n", + "2023-02-21, BUY CREATE, 25032.42\n", + "2023-02-21, Order Canceled/Margin/Rejected\n", + "2023-02-21, Close, 24999.95\n", + "2023-02-21, BUY CREATE, 24999.95\n", + "2023-02-21, Order Canceled/Margin/Rejected\n", + "2023-02-21, Close, 24689.23\n", + "2023-02-21, Close, 24799.99\n", + "2023-02-21, Close, 24702.72\n", + "2023-02-21, Close, 24572.83\n", + "2023-02-21, Close, 24634.00\n", + "2023-02-21, Close, 24569.80\n", + "2023-02-21, Close, 24684.93\n", + "2023-02-21, Close, 24558.09\n", + "2023-02-21, Close, 24403.27\n", + "2023-02-21, Close, 24655.45\n", + "2023-02-21, Close, 24685.06\n", + "2023-02-21, Close, 24602.88\n", + "2023-02-21, Close, 24465.63\n", + "2023-02-21, Close, 24201.20\n", + "2023-02-21, Close, 24384.11\n", + "2023-02-21, Close, 24452.16\n", + "2023-02-22, Close, 24412.47\n", + "2023-02-22, Close, 24175.50\n", + "2023-02-22, Close, 24170.47\n", + "2023-02-22, Close, 24201.85\n", + "2023-02-22, Close, 24155.23\n", + "2023-02-22, Close, 24107.02\n", + "2023-02-22, Close, 23950.15\n", + "2023-02-22, Close, 24060.95\n", + "2023-02-22, Close, 23965.78\n", + "2023-02-22, Close, 24105.60\n", + "2023-02-22, Close, 24181.69\n", + "2023-02-22, Close, 24160.87\n", + "2023-02-22, Close, 24129.68\n", + "2023-02-22, Close, 24109.71\n", + "2023-02-22, Close, 23939.75\n", + "2023-02-22, Close, 23713.61\n", + "2023-02-22, Close, 23634.98\n", + "2023-02-22, Close, 23745.83\n", + "2023-02-22, Close, 23740.08\n", + "2023-02-22, Close, 23791.67\n", + "2023-02-22, Close, 23799.49\n", + "2023-02-22, Close, 23801.77\n", + "2023-02-22, Close, 24100.68\n", + "2023-02-22, BUY CREATE, 24100.68\n", + "2023-02-22, Order Canceled/Margin/Rejected\n", + "2023-02-22, Close, 24182.21\n", + "2023-02-22, BUY CREATE, 24182.21\n", + "2023-02-23, Order Canceled/Margin/Rejected\n", + "2023-02-23, Close, 24129.22\n", + "2023-02-23, BUY CREATE, 24129.22\n", + "2023-02-23, Order Canceled/Margin/Rejected\n", + "2023-02-23, Close, 24189.43\n", + "2023-02-23, BUY CREATE, 24189.43\n", + "2023-02-23, Order Canceled/Margin/Rejected\n", + "2023-02-23, Close, 24531.61\n", + "2023-02-23, BUY CREATE, 24531.61\n", + "2023-02-23, Order Canceled/Margin/Rejected\n", + "2023-02-23, Close, 24454.85\n", + "2023-02-23, BUY CREATE, 24454.85\n", + "2023-02-23, Order Canceled/Margin/Rejected\n", + "2023-02-23, Close, 24521.24\n", + "2023-02-23, BUY CREATE, 24521.24\n", + "2023-02-23, Order Canceled/Margin/Rejected\n", + "2023-02-23, Close, 24391.34\n", + "2023-02-23, BUY CREATE, 24391.34\n", + "2023-02-23, Order Canceled/Margin/Rejected\n", + "2023-02-23, Close, 24390.36\n", + "2023-02-23, BUY CREATE, 24390.36\n", + "2023-02-23, Order Canceled/Margin/Rejected\n", + "2023-02-23, Close, 24376.27\n", + "2023-02-23, BUY CREATE, 24376.27\n", + "2023-02-23, Order Canceled/Margin/Rejected\n", + "2023-02-23, Close, 24406.78\n", + "2023-02-23, BUY CREATE, 24406.78\n", + "2023-02-23, Order Canceled/Margin/Rejected\n", + "2023-02-23, Close, 24282.42\n", + "2023-02-23, BUY CREATE, 24282.42\n", + "2023-02-23, Order Canceled/Margin/Rejected\n", + "2023-02-23, Close, 24255.92\n", + "2023-02-23, BUY CREATE, 24255.92\n", + "2023-02-23, Order Canceled/Margin/Rejected\n", + "2023-02-23, Close, 23780.20\n", + "2023-02-23, Close, 23912.09\n", + "2023-02-23, Close, 24010.23\n", + "2023-02-23, Close, 24011.30\n", + "2023-02-23, Close, 23950.92\n", + "2023-02-23, Close, 23762.61\n", + "2023-02-23, Close, 23840.97\n", + "2023-02-23, Close, 23861.72\n", + "2023-02-23, Close, 23971.50\n", + "2023-02-23, Close, 23943.80\n", + "2023-02-23, Close, 23873.57\n", + "2023-02-23, Close, 23866.11\n", + "2023-02-23, Close, 23940.20\n", + "2023-02-24, Close, 23958.71\n", + "2023-02-24, BUY CREATE, 23958.71\n", + "2023-02-24, Order Canceled/Margin/Rejected\n", + "2023-02-24, Close, 24002.85\n", + "2023-02-24, BUY CREATE, 24002.85\n", + "2023-02-24, Order Canceled/Margin/Rejected\n", + "2023-02-24, Close, 23940.42\n", + "2023-02-24, BUY CREATE, 23940.42\n", + "2023-02-24, Order Canceled/Margin/Rejected\n", + "2023-02-24, Close, 23954.05\n", + "2023-02-24, BUY CREATE, 23954.05\n", + "2023-02-24, Order Canceled/Margin/Rejected\n", + "2023-02-24, Close, 23942.21\n", + "2023-02-24, BUY CREATE, 23942.21\n", + "2023-02-24, Order Canceled/Margin/Rejected\n", + "2023-02-24, Close, 23896.60\n", + "2023-02-24, Close, 23892.06\n", + "2023-02-24, Close, 23830.32\n", + "2023-02-24, Close, 23900.34\n", + "2023-02-24, Close, 23829.03\n", + "2023-02-24, Close, 23861.86\n", + "2023-02-24, Close, 23883.72\n", + "2023-02-24, Close, 23886.70\n", + "2023-02-24, Close, 23781.76\n", + "2023-02-24, Close, 23810.20\n", + "2023-02-24, Close, 23351.31\n", + "2023-02-24, Close, 23191.67\n", + "2023-02-24, Close, 23066.45\n", + "2023-02-24, Close, 23087.59\n", + "2023-02-24, Close, 23182.27\n", + "2023-02-24, Close, 23213.62\n", + "2023-02-24, Close, 23102.59\n", + "2023-02-24, Close, 23119.86\n", + "2023-02-24, Close, 23185.29\n", + "2023-02-25, Close, 23165.61\n", + "2023-02-25, Close, 23182.56\n", + "2023-02-25, Close, 23085.01\n", + "2023-02-25, Close, 23077.64\n", + "2023-02-25, Close, 23127.22\n", + "2023-02-25, Close, 23040.57\n", + "2023-02-25, Close, 23088.60\n", + "2023-02-25, Close, 23117.16\n", + "2023-02-25, Close, 23100.98\n", + "2023-02-25, Close, 23059.24\n", + "2023-02-25, Close, 22931.05\n", + "2023-02-25, Close, 22983.85\n", + "2023-02-25, Close, 23018.34\n", + "2023-02-25, Close, 23004.12\n", + "2023-02-25, Close, 23001.87\n", + "2023-02-25, Close, 23006.18\n", + "2023-02-25, Close, 23012.55\n", + "2023-02-25, Close, 23042.52\n", + "2023-02-25, BUY CREATE, 23042.52\n", + "2023-02-25, Order Canceled/Margin/Rejected\n", + "2023-02-25, Close, 22979.30\n", + "2023-02-25, Close, 22983.05\n", + "2023-02-25, Close, 22922.58\n", + "2023-02-25, Close, 22934.42\n", + "2023-02-25, Close, 23118.73\n", + "2023-02-25, BUY CREATE, 23118.73\n", + "2023-02-25, Order Canceled/Margin/Rejected\n", + "2023-02-25, Close, 23157.07\n", + "2023-02-25, BUY CREATE, 23157.07\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23097.97\n", + "2023-02-26, BUY CREATE, 23097.97\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23112.70\n", + "2023-02-26, BUY CREATE, 23112.70\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23236.01\n", + "2023-02-26, BUY CREATE, 23236.01\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23214.53\n", + "2023-02-26, BUY CREATE, 23214.53\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23189.27\n", + "2023-02-26, BUY CREATE, 23189.27\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23127.06\n", + "2023-02-26, BUY CREATE, 23127.06\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23167.40\n", + "2023-02-26, BUY CREATE, 23167.40\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23154.57\n", + "2023-02-26, BUY CREATE, 23154.57\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23151.95\n", + "2023-02-26, BUY CREATE, 23151.95\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23279.50\n", + "2023-02-26, BUY CREATE, 23279.50\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23236.81\n", + "2023-02-26, BUY CREATE, 23236.81\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23253.44\n", + "2023-02-26, BUY CREATE, 23253.44\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23161.99\n", + "2023-02-26, Close, 23214.15\n", + "2023-02-26, BUY CREATE, 23214.15\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23193.65\n", + "2023-02-26, BUY CREATE, 23193.65\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23247.23\n", + "2023-02-26, BUY CREATE, 23247.23\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23184.92\n", + "2023-02-26, Close, 23239.54\n", + "2023-02-26, BUY CREATE, 23239.54\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23486.43\n", + "2023-02-26, BUY CREATE, 23486.43\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23499.33\n", + "2023-02-26, BUY CREATE, 23499.33\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23639.68\n", + "2023-02-26, BUY CREATE, 23639.68\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23560.60\n", + "2023-02-26, BUY CREATE, 23560.60\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23476.41\n", + "2023-02-26, BUY CREATE, 23476.41\n", + "2023-02-26, Order Canceled/Margin/Rejected\n", + "2023-02-26, Close, 23554.85\n", + "2023-02-26, BUY CREATE, 23554.85\n", + "2023-02-27, Order Canceled/Margin/Rejected\n", + "2023-02-27, Close, 23492.64\n", + "2023-02-27, BUY CREATE, 23492.64\n", + "2023-02-27, Order Canceled/Margin/Rejected\n", + "2023-02-27, Close, 23552.76\n", + "2023-02-27, BUY CREATE, 23552.76\n", + "2023-02-27, Order Canceled/Margin/Rejected\n", + "2023-02-27, Close, 23558.64\n", + "2023-02-27, BUY CREATE, 23558.64\n", + "2023-02-27, Order Canceled/Margin/Rejected\n", + "2023-02-27, Close, 23551.62\n", + "2023-02-27, BUY CREATE, 23551.62\n", + "2023-02-27, Order Canceled/Margin/Rejected\n", + "2023-02-27, Close, 23491.46\n", + "2023-02-27, BUY CREATE, 23491.46\n", + "2023-02-27, Order Canceled/Margin/Rejected\n", + "2023-02-27, Close, 23391.52\n", + "2023-02-27, Close, 23405.39\n", + "2023-02-27, Close, 23423.31\n", + "2023-02-27, Close, 23358.91\n", + "2023-02-27, Close, 23389.37\n", + "2023-02-27, Close, 23378.79\n", + "2023-02-27, Close, 23428.87\n", + "2023-02-27, Close, 23403.18\n", + "2023-02-27, Close, 23703.01\n", + "2023-02-27, BUY CREATE, 23703.01\n", + "2023-02-27, Order Canceled/Margin/Rejected\n", + "2023-02-27, Close, 23803.46\n", + "2023-02-27, BUY CREATE, 23803.46\n", + "2023-02-27, Order Canceled/Margin/Rejected\n", + "2023-02-27, Close, 23559.40\n", + "2023-02-27, BUY CREATE, 23559.40\n", + "2023-02-27, Order Canceled/Margin/Rejected\n", + "2023-02-27, Close, 23391.49\n", + "2023-02-27, Close, 23334.40\n", + "2023-02-27, Close, 23288.77\n", + "2023-02-27, Close, 23276.35\n", + "2023-02-27, Close, 23321.37\n", + "2023-02-27, Close, 23381.38\n", + "2023-02-27, Close, 23482.13\n", + "2023-02-27, BUY CREATE, 23482.13\n", + "2023-02-27, Order Canceled/Margin/Rejected\n", + "2023-02-27, Close, 23492.09\n", + "2023-02-27, BUY CREATE, 23492.09\n", + "2023-02-28, Order Canceled/Margin/Rejected\n", + "2023-02-28, Close, 23420.55\n", + "2023-02-28, Close, 23433.16\n", + "2023-02-28, Close, 23441.76\n", + "2023-02-28, Close, 23467.52\n", + "2023-02-28, BUY CREATE, 23467.52\n", + "2023-02-28, Order Canceled/Margin/Rejected\n", + "2023-02-28, Close, 23415.00\n", + "2023-02-28, Close, 23378.45\n", + "2023-02-28, Close, 23392.30\n", + "2023-02-28, Close, 23236.68\n", + "2023-02-28, Close, 23264.21\n", + "2023-02-28, Close, 23267.79\n", + "2023-02-28, Close, 23363.90\n", + "2023-02-28, Close, 23392.69\n", + "2023-02-28, BUY CREATE, 23392.69\n", + "2023-02-28, Order Canceled/Margin/Rejected\n", + "2023-02-28, Close, 23454.54\n", + "2023-02-28, BUY CREATE, 23454.54\n", + "2023-02-28, Order Canceled/Margin/Rejected\n", + "2023-02-28, Close, 23403.17\n", + "2023-02-28, BUY CREATE, 23403.17\n", + "2023-02-28, Order Canceled/Margin/Rejected\n", + "2023-02-28, Close, 23425.94\n", + "2023-02-28, BUY CREATE, 23425.94\n", + "2023-02-28, Order Canceled/Margin/Rejected\n", + "2023-02-28, Close, 23518.30\n", + "2023-02-28, BUY CREATE, 23518.30\n", + "2023-02-28, Order Canceled/Margin/Rejected\n", + "2023-02-28, Close, 23456.05\n", + "2023-02-28, BUY CREATE, 23456.05\n", + "2023-02-28, Order Canceled/Margin/Rejected\n", + "2023-02-28, Close, 23526.54\n", + "2023-02-28, BUY CREATE, 23526.54\n", + "2023-02-28, Order Canceled/Margin/Rejected\n", + "2023-02-28, Close, 23481.63\n", + "2023-02-28, BUY CREATE, 23481.63\n", + "2023-02-28, Order Canceled/Margin/Rejected\n", + "2023-02-28, Close, 23264.36\n", + "2023-02-28, Close, 23272.05\n", + "2023-02-28, Close, 23139.89\n", + "2023-02-28, Close, 23161.38\n", + "2023-02-28, Close, 23141.57\n", + "2023-03-01, Close, 23101.00\n", + "2023-03-01, Close, 23245.96\n", + "2023-03-01, Close, 23331.21\n", + "2023-03-01, BUY CREATE, 23331.21\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23441.14\n", + "2023-03-01, BUY CREATE, 23441.14\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23794.48\n", + "2023-03-01, BUY CREATE, 23794.48\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23694.17\n", + "2023-03-01, BUY CREATE, 23694.17\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23752.75\n", + "2023-03-01, BUY CREATE, 23752.75\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23716.06\n", + "2023-03-01, BUY CREATE, 23716.06\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23867.78\n", + "2023-03-01, BUY CREATE, 23867.78\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23756.14\n", + "2023-03-01, BUY CREATE, 23756.14\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23777.62\n", + "2023-03-01, BUY CREATE, 23777.62\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23739.17\n", + "2023-03-01, BUY CREATE, 23739.17\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23722.60\n", + "2023-03-01, BUY CREATE, 23722.60\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23689.45\n", + "2023-03-01, BUY CREATE, 23689.45\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23679.86\n", + "2023-03-01, BUY CREATE, 23679.86\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23711.09\n", + "2023-03-01, BUY CREATE, 23711.09\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23691.90\n", + "2023-03-01, BUY CREATE, 23691.90\n", + "2023-03-01, Order Canceled/Margin/Rejected\n", + "2023-03-01, Close, 23704.68\n", + "2023-03-01, Close, 23690.88\n", + "2023-03-01, Close, 23355.14\n", + "2023-03-01, Close, 23421.23\n", + "2023-03-01, Close, 23553.73\n", + "2023-03-01, Close, 23531.94\n", + "2023-03-01, Close, 23628.97\n", + "2023-03-02, Close, 23606.95\n", + "2023-03-02, Close, 23513.50\n", + "2023-03-02, Close, 23494.47\n", + "2023-03-02, Close, 23494.29\n", + "2023-03-02, Close, 23536.33\n", + "2023-03-02, Close, 23445.71\n", + "2023-03-02, Close, 23437.86\n", + "2023-03-02, Close, 23391.87\n", + "2023-03-02, Close, 23443.67\n", + "2023-03-02, Close, 23400.39\n", + "2023-03-02, Close, 23375.64\n", + "2023-03-02, Close, 23414.73\n", + "2023-03-02, Close, 23355.54\n", + "2023-03-02, Close, 23308.95\n", + "2023-03-02, Close, 23305.46\n", + "2023-03-02, Close, 23361.11\n", + "2023-03-02, Close, 23279.98\n", + "2023-03-02, Close, 23268.91\n", + "2023-03-02, Close, 23441.14\n", + "2023-03-02, BUY CREATE, 23441.14\n", + "2023-03-02, Order Canceled/Margin/Rejected\n", + "2023-03-02, Close, 23463.99\n", + "2023-03-02, BUY CREATE, 23463.99\n", + "2023-03-02, Order Canceled/Margin/Rejected\n", + "2023-03-02, Close, 23467.06\n", + "2023-03-02, BUY CREATE, 23467.06\n", + "2023-03-02, Order Canceled/Margin/Rejected\n", + "2023-03-02, Close, 23408.65\n", + "2023-03-02, BUY CREATE, 23408.65\n", + "2023-03-02, Order Canceled/Margin/Rejected\n", + "2023-03-02, Close, 23460.97\n", + "2023-03-02, BUY CREATE, 23460.97\n", + "2023-03-02, Order Canceled/Margin/Rejected\n", + "2023-03-02, Close, 23465.32\n", + "2023-03-02, BUY CREATE, 23465.32\n", + "2023-03-03, Order Canceled/Margin/Rejected\n", + "2023-03-03, Close, 23418.50\n", + "2023-03-03, BUY CREATE, 23418.50\n", + "2023-03-03, Order Canceled/Margin/Rejected\n", + "2023-03-03, Close, 22150.31\n", + "2023-03-03, Close, 22348.57\n", + "2023-03-03, Close, 22319.69\n", + "2023-03-03, Close, 22376.50\n", + "2023-03-03, Close, 22341.80\n", + "2023-03-03, Close, 22378.73\n", + "2023-03-03, Close, 22360.78\n", + "2023-03-03, Close, 22430.33\n", + "2023-03-03, Close, 22368.54\n", + "2023-03-03, Close, 22351.43\n", + "2023-03-03, Close, 22342.92\n", + "2023-03-03, Close, 22354.00\n", + "2023-03-03, Close, 22402.80\n", + "2023-03-03, Close, 22376.00\n", + "2023-03-03, Close, 22336.33\n", + "2023-03-03, Close, 22374.15\n", + "2023-03-03, BUY CREATE, 22374.15\n", + "2023-03-03, Order Canceled/Margin/Rejected\n", + "2023-03-03, Close, 22413.17\n", + "2023-03-03, BUY CREATE, 22413.17\n", + "2023-03-03, Order Canceled/Margin/Rejected\n", + "2023-03-03, Close, 22313.20\n", + "2023-03-03, Close, 22358.48\n", + "2023-03-03, Close, 22308.16\n", + "2023-03-03, Close, 22239.92\n", + "2023-03-03, Close, 22320.99\n", + "2023-03-03, Close, 22354.34\n", + "2023-03-03, BUY CREATE, 22354.34\n", + "2023-03-04, Order Canceled/Margin/Rejected\n", + "2023-03-04, Close, 22368.49\n", + "2023-03-04, BUY CREATE, 22368.49\n", + "2023-03-04, Order Canceled/Margin/Rejected\n", + "2023-03-04, Close, 22342.01\n", + "2023-03-04, Close, 22339.87\n", + "2023-03-04, Close, 22346.66\n", + "2023-03-04, BUY CREATE, 22346.66\n", + "2023-03-04, Order Canceled/Margin/Rejected\n", + "2023-03-04, Close, 22343.94\n", + "2023-03-04, BUY CREATE, 22343.94\n", + "2023-03-04, Order Canceled/Margin/Rejected\n", + "2023-03-04, Close, 22328.18\n", + "2023-03-04, Close, 22364.69\n", + "2023-03-04, BUY CREATE, 22364.69\n", + "2023-03-04, Order Canceled/Margin/Rejected\n", + "2023-03-04, Close, 22359.09\n", + "2023-03-04, BUY CREATE, 22359.09\n", + "2023-03-04, Order Canceled/Margin/Rejected\n", + "2023-03-04, Close, 22341.21\n", + "2023-03-04, BUY CREATE, 22341.21\n", + "2023-03-04, Order Canceled/Margin/Rejected\n", + "2023-03-04, Close, 22350.97\n", + "2023-03-04, BUY CREATE, 22350.97\n", + "2023-03-04, Order Canceled/Margin/Rejected\n", + "2023-03-04, Close, 22332.76\n", + "2023-03-04, Close, 22349.46\n", + "2023-03-04, BUY CREATE, 22349.46\n", + "2023-03-04, Order Canceled/Margin/Rejected\n", + "2023-03-04, Close, 22385.31\n", + "2023-03-04, BUY CREATE, 22385.31\n", + "2023-03-04, Order Canceled/Margin/Rejected\n", + "2023-03-04, Close, 22355.80\n", + "2023-03-04, BUY CREATE, 22355.80\n", + "2023-03-04, Order Canceled/Margin/Rejected\n", + "2023-03-04, Close, 22342.79\n", + "2023-03-04, Close, 22317.87\n", + "2023-03-04, Close, 22324.86\n", + "2023-03-04, Close, 22307.12\n", + "2023-03-04, Close, 22320.97\n", + "2023-03-04, Close, 22250.78\n", + "2023-03-04, Close, 22250.34\n", + "2023-03-04, Close, 22213.65\n", + "2023-03-04, Close, 22305.98\n", + "2023-03-04, Close, 22346.57\n", + "2023-03-04, BUY CREATE, 22346.57\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22379.25\n", + "2023-03-05, BUY CREATE, 22379.25\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22591.68\n", + "2023-03-05, BUY CREATE, 22591.68\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22360.82\n", + "2023-03-05, BUY CREATE, 22360.82\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22387.02\n", + "2023-03-05, BUY CREATE, 22387.02\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22440.73\n", + "2023-03-05, BUY CREATE, 22440.73\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22418.99\n", + "2023-03-05, BUY CREATE, 22418.99\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22415.73\n", + "2023-03-05, BUY CREATE, 22415.73\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22375.70\n", + "2023-03-05, BUY CREATE, 22375.70\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22342.71\n", + "2023-03-05, Close, 22368.47\n", + "2023-03-05, BUY CREATE, 22368.47\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22410.83\n", + "2023-03-05, BUY CREATE, 22410.83\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22389.77\n", + "2023-03-05, BUY CREATE, 22389.77\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22420.34\n", + "2023-03-05, BUY CREATE, 22420.34\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22465.77\n", + "2023-03-05, BUY CREATE, 22465.77\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22432.46\n", + "2023-03-05, BUY CREATE, 22432.46\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22436.18\n", + "2023-03-05, BUY CREATE, 22436.18\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22442.92\n", + "2023-03-05, BUY CREATE, 22442.92\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22427.47\n", + "2023-03-05, BUY CREATE, 22427.47\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22429.26\n", + "2023-03-05, BUY CREATE, 22429.26\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22403.45\n", + "2023-03-05, Close, 22409.05\n", + "2023-03-05, Close, 22483.46\n", + "2023-03-05, BUY CREATE, 22483.46\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22433.00\n", + "2023-03-05, BUY CREATE, 22433.00\n", + "2023-03-05, Order Canceled/Margin/Rejected\n", + "2023-03-05, Close, 22430.24\n", + "2023-03-05, BUY CREATE, 22430.24\n", + "2023-03-06, Order Canceled/Margin/Rejected\n", + "2023-03-06, Close, 22446.48\n", + "2023-03-06, BUY CREATE, 22446.48\n", + "2023-03-06, Order Canceled/Margin/Rejected\n", + "2023-03-06, Close, 22379.24\n", + "2023-03-06, Close, 22391.58\n", + "2023-03-06, Close, 22387.19\n", + "2023-03-06, Close, 22342.63\n", + "2023-03-06, Close, 22370.18\n", + "2023-03-06, Close, 22405.93\n", + "2023-03-06, Close, 22392.74\n", + "2023-03-06, Close, 22413.23\n", + "2023-03-06, BUY CREATE, 22413.23\n", + "2023-03-06, Order Canceled/Margin/Rejected\n", + "2023-03-06, Close, 22403.68\n", + "2023-03-06, Close, 22399.78\n", + "2023-03-06, Close, 22379.57\n", + "2023-03-06, Close, 22397.42\n", + "2023-03-06, Close, 22439.77\n", + "2023-03-06, BUY CREATE, 22439.77\n", + "2023-03-06, Order Canceled/Margin/Rejected\n", + "2023-03-06, Close, 22450.00\n", + "2023-03-06, BUY CREATE, 22450.00\n", + "2023-03-06, Order Canceled/Margin/Rejected\n", + "2023-03-06, Close, 22553.42\n", + "2023-03-06, BUY CREATE, 22553.42\n", + "2023-03-06, Order Canceled/Margin/Rejected\n", + "2023-03-06, Close, 22524.46\n", + "2023-03-06, BUY CREATE, 22524.46\n", + "2023-03-06, Order Canceled/Margin/Rejected\n", + "2023-03-06, Close, 22481.63\n", + "2023-03-06, BUY CREATE, 22481.63\n", + "2023-03-06, Order Canceled/Margin/Rejected\n", + "2023-03-06, Close, 22504.09\n", + "2023-03-06, BUY CREATE, 22504.09\n", + "2023-03-06, Order Canceled/Margin/Rejected\n", + "2023-03-06, Close, 22393.35\n", + "2023-03-06, Close, 22352.17\n", + "2023-03-06, Close, 22408.53\n", + "2023-03-06, Close, 22433.65\n", + "2023-03-06, Close, 22410.00\n", + "2023-03-07, Close, 22415.92\n", + "2023-03-07, Close, 22484.80\n", + "2023-03-07, BUY CREATE, 22484.80\n", + "2023-03-07, Order Canceled/Margin/Rejected\n", + "2023-03-07, Close, 22497.86\n", + "2023-03-07, BUY CREATE, 22497.86\n", + "2023-03-07, Order Canceled/Margin/Rejected\n", + "2023-03-07, Close, 22460.54\n", + "2023-03-07, BUY CREATE, 22460.54\n", + "2023-03-07, Order Canceled/Margin/Rejected\n", + "2023-03-07, Close, 22474.36\n", + "2023-03-07, BUY CREATE, 22474.36\n", + "2023-03-07, Order Canceled/Margin/Rejected\n", + "2023-03-07, Close, 22460.67\n", + "2023-03-07, BUY CREATE, 22460.67\n", + "2023-03-07, Order Canceled/Margin/Rejected\n", + "2023-03-07, Close, 22438.52\n", + "2023-03-07, Close, 22419.71\n", + "2023-03-07, Close, 22420.18\n", + "2023-03-07, Close, 22381.17\n", + "2023-03-07, Close, 22372.85\n", + "2023-03-07, Close, 22351.02\n", + "2023-03-07, Close, 22399.07\n", + "2023-03-07, Close, 22363.89\n", + "2023-03-07, Close, 22309.18\n", + "2023-03-07, Close, 22320.90\n", + "2023-03-07, Close, 22238.77\n", + "2023-03-07, Close, 22309.28\n", + "2023-03-07, Close, 22199.96\n", + "2023-03-07, Close, 22124.77\n", + "2023-03-07, Close, 22054.51\n", + "2023-03-07, Close, 22056.26\n", + "2023-03-07, Close, 22105.65\n", + "2023-03-07, Close, 22197.96\n", + "2023-03-08, Close, 22245.86\n", + "2023-03-08, BUY CREATE, 22245.86\n", + "2023-03-08, Order Canceled/Margin/Rejected\n", + "2023-03-08, Close, 22173.70\n", + "2023-03-08, Close, 22177.00\n", + "2023-03-08, Close, 22152.52\n", + "2023-03-08, Close, 22141.79\n", + "2023-03-08, Close, 21954.98\n", + "2023-03-08, Close, 22025.63\n", + "2023-03-08, Close, 21971.03\n", + "2023-03-08, Close, 21989.14\n", + "2023-03-08, Close, 22012.75\n", + "2023-03-08, Close, 22111.25\n", + "2023-03-08, BUY CREATE, 22111.25\n", + "2023-03-08, Order Canceled/Margin/Rejected\n", + "2023-03-08, Close, 22072.45\n", + "2023-03-08, Close, 22014.17\n", + "2023-03-08, Close, 21989.16\n", + "2023-03-08, Close, 21974.73\n", + "2023-03-08, Close, 22140.80\n", + "2023-03-08, BUY CREATE, 22140.80\n", + "2023-03-08, Order Canceled/Margin/Rejected\n", + "2023-03-08, Close, 22140.61\n", + "2023-03-08, BUY CREATE, 22140.61\n", + "2023-03-08, Order Canceled/Margin/Rejected\n", + "2023-03-08, Close, 22034.48\n", + "2023-03-08, Close, 22022.75\n", + "2023-03-08, Close, 21997.25\n", + "2023-03-08, Close, 22101.26\n", + "2023-03-08, BUY CREATE, 22101.26\n", + "2023-03-08, Order Canceled/Margin/Rejected\n", + "2023-03-08, Close, 22009.75\n", + "2023-03-08, Close, 21802.16\n", + "2023-03-08, Close, 21705.44\n", + "2023-03-09, Close, 21719.42\n", + "2023-03-09, Close, 21702.94\n", + "2023-03-09, Close, 21769.65\n", + "2023-03-09, Close, 21769.66\n", + "2023-03-09, Close, 21740.43\n", + "2023-03-09, Close, 21738.93\n", + "2023-03-09, Close, 21741.80\n", + "2023-03-09, Close, 21688.54\n", + "2023-03-09, Close, 21681.52\n", + "2023-03-09, Close, 21641.58\n", + "2023-03-09, Close, 21648.43\n", + "2023-03-09, Close, 21669.38\n", + "2023-03-09, Close, 21611.34\n", + "2023-03-09, Close, 21703.76\n", + "2023-03-09, BUY CREATE, 21703.76\n", + "2023-03-09, BUY EXECUTED, Price: 21703.76, Cost: 108518.80, Comm 0.00\n", + "2023-03-09, Close, 21722.89\n", + "2023-03-09, Close, 21648.57\n", + "2023-03-09, SELL CREATE, 21648.57\n", + "2023-03-09, SELL EXECUTED, Price: 21647.42, Cost: 108518.80, Comm 0.00\n", + "2023-03-09, OPERATION PROFIT, GROSS -281.70, NET -281.70\n", + "2023-03-09, Close, 21478.85\n", + "2023-03-09, Close, 21469.46\n", + "2023-03-09, Close, 21012.89\n", + "2023-03-09, Close, 20854.93\n", + "2023-03-09, Close, 20116.66\n", + "2023-03-09, Close, 20213.61\n", + "2023-03-09, Close, 20343.58\n", + "2023-03-09, Close, 20362.22\n", + "2023-03-10, Close, 20120.27\n", + "2023-03-10, Close, 20111.01\n", + "2023-03-10, Close, 20040.44\n", + "2023-03-10, Close, 20052.07\n", + "2023-03-10, Close, 19876.69\n", + "2023-03-10, Close, 19990.10\n", + "2023-03-10, Close, 19873.46\n", + "2023-03-10, Close, 19953.58\n", + "2023-03-10, Close, 19959.12\n", + "2023-03-10, Close, 19853.12\n", + "2023-03-10, Close, 19621.66\n", + "2023-03-10, Close, 19760.78\n", + "2023-03-10, Close, 19934.75\n", + "2023-03-10, Close, 20184.92\n", + "2023-03-10, BUY CREATE, 20184.92\n", + "2023-03-10, BUY EXECUTED, Price: 20184.90, Cost: 100924.50, Comm 0.00\n", + "2023-03-10, Close, 19819.80\n", + "2023-03-10, SELL CREATE, 19819.80\n", + "2023-03-10, SELL EXECUTED, Price: 19819.80, Cost: 100924.50, Comm 0.00\n", + "2023-03-10, OPERATION PROFIT, GROSS -1825.50, NET -1825.50\n", + "2023-03-10, Close, 20004.96\n", + "2023-03-10, BUY CREATE, 20004.96\n", + "2023-03-10, BUY EXECUTED, Price: 20004.96, Cost: 100024.80, Comm 0.00\n", + "2023-03-10, Close, 20016.36\n", + "2023-03-10, Close, 19930.48\n", + "2023-03-10, Close, 19848.52\n", + "2023-03-10, SELL CREATE, 19848.52\n", + "2023-03-10, SELL EXECUTED, Price: 19848.50, Cost: 100024.80, Comm 0.00\n", + "2023-03-10, OPERATION PROFIT, GROSS -782.30, NET -782.30\n", + "2023-03-10, Close, 20024.32\n", + "2023-03-10, BUY CREATE, 20024.32\n", + "2023-03-10, BUY EXECUTED, Price: 20022.72, Cost: 100113.60, Comm 0.00\n", + "2023-03-10, Close, 19969.31\n", + "2023-03-10, Close, 20076.64\n", + "2023-03-10, Close, 20097.23\n", + "2023-03-10, Close, 20150.69\n", + "2023-03-11, Close, 20216.03\n", + "2023-03-11, Close, 20586.75\n", + "2023-03-11, Close, 20492.43\n", + "2023-03-11, Close, 20393.88\n", + "2023-03-11, Close, 20339.70\n", + "2023-03-11, Close, 20391.39\n", + "2023-03-11, Close, 20284.61\n", + "2023-03-11, Close, 19850.81\n", + "2023-03-11, SELL CREATE, 19850.81\n", + "2023-03-11, SELL EXECUTED, Price: 19850.81, Cost: 100113.60, Comm 0.00\n", + "2023-03-11, OPERATION PROFIT, GROSS -859.55, NET -859.55\n", + "2023-03-11, Close, 20071.82\n", + "2023-03-11, Close, 20092.78\n", + "2023-03-11, Close, 20036.75\n", + "2023-03-11, Close, 20086.07\n", + "2023-03-11, Close, 20031.65\n", + "2023-03-11, Close, 20078.23\n", + "2023-03-11, Close, 20112.33\n", + "2023-03-11, Close, 20061.98\n", + "2023-03-11, Close, 20091.11\n", + "2023-03-11, Close, 20246.92\n", + "2023-03-11, BUY CREATE, 20246.92\n", + "2023-03-11, BUY EXECUTED, Price: 20245.48, Cost: 101227.40, Comm 0.00\n", + "2023-03-11, Close, 20226.72\n", + "2023-03-11, Close, 20220.96\n", + "2023-03-11, Close, 20349.40\n", + "2023-03-11, Close, 20353.91\n", + "2023-03-11, Close, 20333.55\n", + "2023-03-11, Close, 20455.73\n", + "2023-03-12, Close, 20453.41\n", + "2023-03-12, Close, 20419.33\n", + "2023-03-12, Close, 20377.20\n", + "2023-03-12, Close, 20376.46\n", + "2023-03-12, Close, 20386.99\n", + "2023-03-12, Close, 20354.68\n", + "2023-03-12, Close, 20331.80\n", + "2023-03-12, SELL CREATE, 20331.80\n", + "2023-03-12, SELL EXECUTED, Price: 20331.20, Cost: 101227.40, Comm 0.00\n", + "2023-03-12, OPERATION PROFIT, GROSS 428.60, NET 428.60\n", + "2023-03-12, Close, 20346.71\n", + "2023-03-12, Close, 20376.88\n", + "2023-03-12, BUY CREATE, 20376.88\n", + "2023-03-12, BUY EXECUTED, Price: 20376.83, Cost: 101884.15, Comm 0.00\n", + "2023-03-12, Close, 20382.18\n", + "2023-03-12, Close, 20425.93\n", + "2023-03-12, Close, 20445.43\n", + "2023-03-12, Close, 20381.25\n", + "2023-03-12, SELL CREATE, 20381.25\n", + "2023-03-12, SELL EXECUTED, Price: 20380.62, Cost: 101884.15, Comm 0.00\n", + "2023-03-12, OPERATION PROFIT, GROSS 18.95, NET 18.95\n", + "2023-03-12, Close, 20383.95\n", + "2023-03-12, Close, 20339.55\n", + "2023-03-12, Close, 20358.96\n", + "2023-03-12, Close, 20389.55\n", + "2023-03-12, BUY CREATE, 20389.55\n", + "2023-03-12, BUY EXECUTED, Price: 20390.15, Cost: 101950.75, Comm 0.00\n", + "2023-03-12, Close, 20785.52\n", + "2023-03-12, Close, 21076.45\n", + "2023-03-12, Close, 20779.54\n", + "2023-03-12, Close, 21259.02\n", + "2023-03-12, Close, 21272.40\n", + "2023-03-12, Close, 21702.38\n", + "2023-03-12, Close, 21997.11\n", + "2023-03-13, Close, 22446.02\n", + "2023-03-13, Close, 22294.10\n", + "2023-03-13, Close, 22182.01\n", + "2023-03-13, Close, 22231.62\n", + "2023-03-13, Close, 22320.07\n", + "2023-03-13, Close, 22397.11\n", + "2023-03-13, Close, 22381.90\n", + "2023-03-13, Close, 22458.72\n", + "2023-03-13, Close, 22191.10\n", + "2023-03-13, Close, 21963.37\n", + "2023-03-13, SELL CREATE, 21963.37\n", + "2023-03-13, SELL EXECUTED, Price: 21961.74, Cost: 101950.75, Comm 0.00\n", + "2023-03-13, OPERATION PROFIT, GROSS 7857.95, NET 7857.95\n", + "2023-03-13, Close, 22124.51\n", + "2023-03-13, BUY CREATE, 22124.51\n", + "2023-03-13, BUY EXECUTED, Price: 22125.45, Cost: 110627.25, Comm 0.00\n", + "2023-03-13, Close, 22106.64\n", + "2023-03-13, SELL CREATE, 22106.64\n", + "2023-03-13, SELL EXECUTED, Price: 22106.63, Cost: 110627.25, Comm 0.00\n", + "2023-03-13, OPERATION PROFIT, GROSS -94.10, NET -94.10\n", + "2023-03-13, Close, 22130.32\n", + "2023-03-13, Close, 22479.64\n", + "2023-03-13, BUY CREATE, 22479.64\n", + "2023-03-13, BUY EXECUTED, Price: 22479.64, Cost: 112398.20, Comm 0.00\n", + "2023-03-13, Close, 23484.63\n", + "2023-03-13, Close, 23981.72\n", + "2023-03-13, Close, 23955.16\n", + "2023-03-13, Close, 24109.10\n", + "2023-03-13, Close, 24256.15\n", + "2023-03-13, Close, 24279.91\n", + "2023-03-13, Close, 24134.11\n", + "2023-03-13, Close, 24085.04\n", + "2023-03-13, Close, 24201.15\n", + "2023-03-13, Close, 24113.48\n", + "2023-03-14, Close, 24166.31\n", + "2023-03-14, Close, 24402.53\n", + "2023-03-14, Close, 24274.69\n", + "2023-03-14, Close, 24374.20\n", + "2023-03-14, Close, 24414.06\n", + "2023-03-14, Close, 24317.80\n", + "2023-03-14, Close, 24325.38\n", + "2023-03-14, Close, 24247.64\n", + "2023-03-14, Close, 24219.61\n", + "2023-03-14, SELL CREATE, 24219.61\n", + "2023-03-14, SELL EXECUTED, Price: 24219.61, Cost: 112398.20, Comm 0.00\n", + "2023-03-14, OPERATION PROFIT, GROSS 8699.85, NET 8699.85\n", + "2023-03-14, Close, 24280.22\n", + "2023-03-14, BUY CREATE, 24280.22\n", + "2023-03-14, BUY EXECUTED, Price: 24280.74, Cost: 121403.70, Comm 0.00\n", + "2023-03-14, Close, 24569.36\n", + "2023-03-14, Close, 24743.04\n", + "2023-03-14, Close, 25832.57\n", + "2023-03-14, Close, 25759.64\n", + "2023-03-14, Close, 25815.75\n", + "2023-03-14, Close, 25894.67\n", + "2023-03-14, Close, 25867.21\n", + "2023-03-14, Close, 25628.25\n", + "2023-03-14, Close, 24990.18\n", + "2023-03-14, SELL CREATE, 24990.18\n", + "2023-03-14, SELL EXECUTED, Price: 24987.84, Cost: 121403.70, Comm 0.00\n", + "2023-03-14, OPERATION PROFIT, GROSS 3535.50, NET 3535.50\n", + "2023-03-14, Close, 25054.15\n", + "2023-03-14, BUY CREATE, 25054.15\n", + "2023-03-14, BUY EXECUTED, Price: 25048.39, Cost: 125241.95, Comm 0.00\n", + "2023-03-14, Close, 24570.06\n", + "2023-03-14, SELL CREATE, 24570.06\n", + "2023-03-14, SELL EXECUTED, Price: 24570.06, Cost: 125241.95, Comm 0.00\n", + "2023-03-14, OPERATION PROFIT, GROSS -2391.65, NET -2391.65\n", + "2023-03-14, Close, 24535.95\n", + "2023-03-14, Close, 24698.39\n", + "2023-03-14, Close, 24670.41\n", + "2023-03-15, Close, 24720.06\n", + "2023-03-15, Close, 24906.01\n", + "2023-03-15, Close, 24827.89\n", + "2023-03-15, Close, 24717.65\n", + "2023-03-15, Close, 24799.90\n", + "2023-03-15, Close, 24699.71\n", + "2023-03-15, Close, 24781.98\n", + "2023-03-15, Close, 24871.28\n", + "2023-03-15, BUY CREATE, 24871.28\n", + "2023-03-15, BUY EXECUTED, Price: 24872.54, Cost: 124362.70, Comm 0.00\n", + "2023-03-15, Close, 24754.70\n", + "2023-03-15, SELL CREATE, 24754.70\n", + "2023-03-15, SELL EXECUTED, Price: 24754.70, Cost: 124362.70, Comm 0.00\n", + "2023-03-15, OPERATION PROFIT, GROSS -589.20, NET -589.20\n", + "2023-03-15, Close, 24516.74\n", + "2023-03-15, Close, 24538.14\n", + "2023-03-15, Close, 24754.50\n", + "2023-03-15, BUY CREATE, 24754.50\n", + "2023-03-15, BUY EXECUTED, Price: 24753.27, Cost: 123766.35, Comm 0.00\n", + "2023-03-15, Close, 24808.12\n", + "2023-03-15, Close, 24777.01\n", + "2023-03-15, Close, 24706.61\n", + "2023-03-15, SELL CREATE, 24706.61\n", + "2023-03-15, SELL EXECUTED, Price: 24706.61, Cost: 123766.35, Comm 0.00\n", + "2023-03-15, OPERATION PROFIT, GROSS -233.30, NET -233.30\n", + "2023-03-15, Close, 24471.01\n", + "2023-03-15, Close, 24104.69\n", + "2023-03-15, Close, 24281.86\n", + "2023-03-15, Close, 24409.25\n", + "2023-03-15, Close, 24366.71\n", + "2023-03-15, Close, 24318.56\n", + "2023-03-15, Close, 24422.31\n", + "2023-03-15, Close, 24361.12\n", + "2023-03-15, Close, 24285.66\n", + "2023-03-16, Close, 24202.64\n", + "2023-03-16, Close, 24322.50\n", + "2023-03-16, Close, 24362.64\n", + "2023-03-16, Close, 24265.43\n", + "2023-03-16, Close, 24262.65\n", + "2023-03-16, Close, 24342.80\n", + "2023-03-16, BUY CREATE, 24342.80\n", + "2023-03-16, BUY EXECUTED, Price: 24342.80, Cost: 121714.00, Comm 0.00\n", + "2023-03-16, Close, 24568.74\n", + "2023-03-16, Close, 24614.27\n", + "2023-03-16, Close, 24581.10\n", + "2023-03-16, Close, 24658.21\n", + "2023-03-16, Close, 24930.23\n", + "2023-03-16, Close, 24824.62\n", + "2023-03-16, Close, 24720.18\n", + "2023-03-16, Close, 24832.09\n", + "2023-03-16, Close, 24846.64\n", + "2023-03-16, Close, 24888.44\n", + "2023-03-16, Close, 24780.79\n", + "2023-03-16, Close, 24684.98\n", + "2023-03-16, Close, 24790.77\n", + "2023-03-16, Close, 24953.21\n", + "2023-03-16, Close, 24696.87\n", + "2023-03-16, SELL CREATE, 24696.87\n", + "2023-03-16, SELL EXECUTED, Price: 24698.41, Cost: 121714.00, Comm 0.00\n", + "2023-03-16, OPERATION PROFIT, GROSS 1778.05, NET 1778.05\n", + "2023-03-16, Close, 24914.01\n", + "2023-03-16, BUY CREATE, 24914.01\n", + "2023-03-16, BUY EXECUTED, Price: 24915.22, Cost: 124576.10, Comm 0.00\n", + "2023-03-16, Close, 24981.59\n", + "2023-03-16, Close, 24998.78\n", + "2023-03-17, Close, 24918.14\n", + "2023-03-17, Close, 25666.59\n", + "2023-03-17, Close, 25580.16\n", + "2023-03-17, Close, 25781.66\n", + "2023-03-17, Close, 25722.04\n", + "2023-03-17, Close, 25765.88\n", + "2023-03-17, Close, 26142.14\n", + "2023-03-17, Close, 26058.45\n", + "2023-03-17, Close, 25996.41\n", + "2023-03-17, Close, 26240.16\n", + "2023-03-17, Close, 26706.71\n", + "2023-03-17, Close, 26918.73\n", + "2023-03-17, Close, 26631.94\n", + "2023-03-17, Close, 26453.89\n", + "2023-03-17, Close, 26283.00\n", + "2023-03-17, Close, 26421.34\n", + "2023-03-17, Close, 26393.98\n", + "2023-03-17, Close, 26487.79\n", + "2023-03-17, Close, 26617.57\n", + "2023-03-17, Close, 26834.87\n", + "2023-03-17, Close, 26769.59\n", + "2023-03-17, Close, 27094.27\n", + "2023-03-17, Close, 27513.31\n", + "2023-03-17, Close, 27395.13\n", + "2023-03-18, Close, 27627.51\n", + "2023-03-18, Close, 27329.78\n", + "2023-03-18, Close, 27290.98\n", + "2023-03-18, Close, 27307.54\n", + "2023-03-18, Close, 27331.24\n", + "2023-03-18, Close, 27578.05\n", + "2023-03-18, Close, 27505.28\n", + "2023-03-18, Close, 27359.89\n", + "2023-03-18, Close, 27217.57\n", + "2023-03-18, SELL CREATE, 27217.57\n", + "2023-03-18, SELL EXECUTED, Price: 27216.53, Cost: 124576.10, Comm 0.00\n", + "2023-03-18, OPERATION PROFIT, GROSS 11506.55, NET 11506.55\n", + "2023-03-18, Close, 27398.26\n", + "2023-03-18, BUY CREATE, 27398.26\n", + "2023-03-18, BUY EXECUTED, Price: 27398.26, Cost: 136991.30, Comm 0.00\n", + "2023-03-18, Close, 27465.19\n", + "2023-03-18, Close, 27443.09\n", + "2023-03-18, Close, 27503.25\n", + "2023-03-18, Close, 27414.93\n", + "2023-03-18, Close, 27525.56\n", + "2023-03-18, Close, 27226.23\n", + "2023-03-18, SELL CREATE, 27226.23\n", + "2023-03-18, SELL EXECUTED, Price: 27227.63, Cost: 136991.30, Comm 0.00\n", + "2023-03-18, OPERATION PROFIT, GROSS -853.15, NET -853.15\n", + "2023-03-18, Close, 27343.98\n", + "2023-03-18, Close, 27307.07\n", + "2023-03-18, Close, 27319.70\n", + "2023-03-18, Close, 27329.83\n", + "2023-03-18, Close, 27317.96\n", + "2023-03-18, Close, 27189.87\n", + "2023-03-18, Close, 26910.45\n", + "2023-03-18, Close, 26907.49\n", + "2023-03-19, Close, 27077.54\n", + "2023-03-19, Close, 27104.91\n", + "2023-03-19, Close, 27116.07\n", + "2023-03-19, Close, 27198.71\n", + "2023-03-19, Close, 27142.00\n", + "2023-03-19, Close, 27060.08\n", + "2023-03-19, Close, 26934.96\n", + "2023-03-19, Close, 26974.81\n", + "2023-03-19, Close, 26982.58\n", + "2023-03-19, Close, 27043.27\n", + "2023-03-19, Close, 27052.80\n", + "2023-03-19, Close, 27160.98\n", + "2023-03-19, BUY CREATE, 27160.98\n", + "2023-03-19, BUY EXECUTED, Price: 27162.33, Cost: 135811.65, Comm 0.00\n", + "2023-03-19, Close, 27246.96\n", + "2023-03-19, Close, 27178.27\n", + "2023-03-19, Close, 27327.72\n", + "2023-03-19, Close, 27546.62\n", + "2023-03-19, Close, 27923.37\n", + "2023-03-19, Close, 27897.98\n", + "2023-03-19, Close, 28303.69\n", + "2023-03-19, Close, 28255.87\n", + "2023-03-19, Close, 27889.22\n", + "2023-03-19, Close, 27975.77\n", + "2023-03-19, Close, 28112.88\n", + "2023-03-19, Close, 27972.87\n", + "2023-03-20, Close, 27825.47\n", + "2023-03-20, Close, 27675.84\n", + "2023-03-20, SELL CREATE, 27675.84\n", + "2023-03-20, SELL EXECUTED, Price: 27675.84, Cost: 135811.65, Comm 0.00\n", + "2023-03-20, OPERATION PROFIT, GROSS 2567.55, NET 2567.55\n", + "2023-03-20, Close, 27434.91\n", + "2023-03-20, Close, 27269.17\n", + "2023-03-20, Close, 27437.00\n", + "2023-03-20, Close, 27519.97\n", + "2023-03-20, Close, 27628.50\n", + "2023-03-20, Close, 28183.13\n", + "2023-03-20, BUY CREATE, 28183.13\n", + "2023-03-20, Order Canceled/Margin/Rejected\n", + "2023-03-20, Close, 28313.85\n", + "2023-03-20, BUY CREATE, 28313.85\n", + "2023-03-20, Order Canceled/Margin/Rejected\n", + "2023-03-20, Close, 28198.04\n", + "2023-03-20, BUY CREATE, 28198.04\n", + "2023-03-20, Order Canceled/Margin/Rejected\n", + "2023-03-20, Close, 28101.40\n", + "2023-03-20, BUY CREATE, 28101.40\n", + "2023-03-20, Order Canceled/Margin/Rejected\n", + "2023-03-20, Close, 28188.93\n", + "2023-03-20, BUY CREATE, 28188.93\n", + "2023-03-20, Order Canceled/Margin/Rejected\n", + "2023-03-20, Close, 28224.99\n", + "2023-03-20, BUY CREATE, 28224.99\n", + "2023-03-20, Order Canceled/Margin/Rejected\n", + "2023-03-20, Close, 27822.73\n", + "2023-03-20, Close, 28055.89\n", + "2023-03-20, BUY CREATE, 28055.89\n", + "2023-03-20, Order Canceled/Margin/Rejected\n", + "2023-03-20, Close, 27694.46\n", + "2023-03-20, Close, 27553.81\n", + "2023-03-20, Close, 27626.96\n", + "2023-03-20, Close, 27980.02\n", + "2023-03-20, BUY CREATE, 27980.02\n", + "2023-03-20, Order Canceled/Margin/Rejected\n", + "2023-03-20, Close, 27785.10\n", + "2023-03-20, Close, 28001.00\n", + "2023-03-20, BUY CREATE, 28001.00\n", + "2023-03-20, Order Canceled/Margin/Rejected\n", + "2023-03-20, Close, 27996.09\n", + "2023-03-20, BUY CREATE, 27996.09\n", + "2023-03-20, Order Canceled/Margin/Rejected\n", + "2023-03-20, Close, 27952.20\n", + "2023-03-20, Close, 27717.01\n", + "2023-03-21, Close, 27850.21\n", + "2023-03-21, Close, 27875.65\n", + "2023-03-21, Close, 27779.74\n", + "2023-03-21, Close, 27787.29\n", + "2023-03-21, Close, 27906.81\n", + "2023-03-21, BUY CREATE, 27906.81\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 27801.41\n", + "2023-03-21, Close, 27637.01\n", + "2023-03-21, Close, 27505.25\n", + "2023-03-21, Close, 27646.65\n", + "2023-03-21, Close, 27929.23\n", + "2023-03-21, BUY CREATE, 27929.23\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 27962.20\n", + "2023-03-21, BUY CREATE, 27962.20\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 28040.13\n", + "2023-03-21, BUY CREATE, 28040.13\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 28188.92\n", + "2023-03-21, BUY CREATE, 28188.92\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 28037.90\n", + "2023-03-21, BUY CREATE, 28037.90\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 27887.98\n", + "2023-03-21, BUY CREATE, 27887.98\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 28041.06\n", + "2023-03-21, BUY CREATE, 28041.06\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 28343.92\n", + "2023-03-21, BUY CREATE, 28343.92\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 27988.69\n", + "2023-03-21, BUY CREATE, 27988.69\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 28128.77\n", + "2023-03-21, BUY CREATE, 28128.77\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 28126.84\n", + "2023-03-21, BUY CREATE, 28126.84\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 28077.28\n", + "2023-03-21, BUY CREATE, 28077.28\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 27997.84\n", + "2023-03-21, BUY CREATE, 27997.84\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 28031.17\n", + "2023-03-21, BUY CREATE, 28031.17\n", + "2023-03-21, Order Canceled/Margin/Rejected\n", + "2023-03-21, Close, 28105.47\n", + "2023-03-21, BUY CREATE, 28105.47\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28028.91\n", + "2023-03-22, Close, 28086.85\n", + "2023-03-22, BUY CREATE, 28086.85\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28049.59\n", + "2023-03-22, Close, 28154.14\n", + "2023-03-22, BUY CREATE, 28154.14\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28196.41\n", + "2023-03-22, BUY CREATE, 28196.41\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28201.52\n", + "2023-03-22, BUY CREATE, 28201.52\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28205.16\n", + "2023-03-22, BUY CREATE, 28205.16\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28103.69\n", + "2023-03-22, BUY CREATE, 28103.69\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28086.99\n", + "2023-03-22, Close, 28099.99\n", + "2023-03-22, Close, 28154.95\n", + "2023-03-22, BUY CREATE, 28154.95\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28122.74\n", + "2023-03-22, BUY CREATE, 28122.74\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28220.08\n", + "2023-03-22, BUY CREATE, 28220.08\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28285.56\n", + "2023-03-22, BUY CREATE, 28285.56\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28563.61\n", + "2023-03-22, BUY CREATE, 28563.61\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28595.07\n", + "2023-03-22, BUY CREATE, 28595.07\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28647.26\n", + "2023-03-22, BUY CREATE, 28647.26\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28516.34\n", + "2023-03-22, BUY CREATE, 28516.34\n", + "2023-03-22, Order Canceled/Margin/Rejected\n", + "2023-03-22, Close, 28027.99\n", + "2023-03-22, Close, 26667.33\n", + "2023-03-22, Close, 27311.29\n", + "2023-03-22, Close, 27083.55\n", + "2023-03-22, Close, 27209.19\n", + "2023-03-22, Close, 27250.97\n", + "2023-03-23, Close, 27322.28\n", + "2023-03-23, Close, 27150.91\n", + "2023-03-23, Close, 27346.16\n", + "2023-03-23, Close, 27356.78\n", + "2023-03-23, Close, 27275.16\n", + "2023-03-23, Close, 27629.18\n", + "2023-03-23, BUY CREATE, 27629.18\n", + "2023-03-23, BUY EXECUTED, Price: 27629.19, Cost: 138145.95, Comm 0.00\n", + "2023-03-23, Close, 27647.67\n", + "2023-03-23, Close, 27631.93\n", + "2023-03-23, Close, 27632.02\n", + "2023-03-23, Close, 27622.82\n", + "2023-03-23, Close, 27612.55\n", + "2023-03-23, Close, 27584.53\n", + "2023-03-23, Close, 27469.99\n", + "2023-03-23, Close, 27369.00\n", + "2023-03-23, SELL CREATE, 27369.00\n", + "2023-03-23, SELL EXECUTED, Price: 27369.01, Cost: 138145.95, Comm 0.00\n", + "2023-03-23, OPERATION PROFIT, GROSS -1300.90, NET -1300.90\n", + "2023-03-23, Close, 28045.30\n", + "2023-03-23, BUY CREATE, 28045.30\n", + "2023-03-23, Order Canceled/Margin/Rejected\n", + "2023-03-23, Close, 28580.87\n", + "2023-03-23, BUY CREATE, 28580.87\n", + "2023-03-23, Order Canceled/Margin/Rejected\n", + "2023-03-23, Close, 28464.96\n", + "2023-03-23, BUY CREATE, 28464.96\n", + "2023-03-23, Order Canceled/Margin/Rejected\n", + "2023-03-23, Close, 28297.16\n", + "2023-03-23, BUY CREATE, 28297.16\n", + "2023-03-23, Order Canceled/Margin/Rejected\n", + "2023-03-23, Close, 27903.80\n", + "2023-03-23, BUY CREATE, 27903.80\n", + "2023-03-23, Order Canceled/Margin/Rejected\n", + "2023-03-23, Close, 28369.99\n", + "2023-03-23, BUY CREATE, 28369.99\n", + "2023-03-23, Order Canceled/Margin/Rejected\n", + "2023-03-23, Close, 28280.03\n", + "2023-03-23, BUY CREATE, 28280.03\n", + "2023-03-23, Order Canceled/Margin/Rejected\n", + "2023-03-23, Close, 28163.79\n", + "2023-03-23, BUY CREATE, 28163.79\n", + "2023-03-23, Order Canceled/Margin/Rejected\n", + "2023-03-23, Close, 28214.10\n", + "2023-03-23, BUY CREATE, 28214.10\n", + "2023-03-23, Order Canceled/Margin/Rejected\n", + "2023-03-23, Close, 28295.41\n", + "2023-03-23, BUY CREATE, 28295.41\n", + "2023-03-24, Order Canceled/Margin/Rejected\n", + "2023-03-24, Close, 28195.30\n", + "2023-03-24, BUY CREATE, 28195.30\n", + "2023-03-24, Order Canceled/Margin/Rejected\n", + "2023-03-24, Close, 28253.00\n", + "2023-03-24, BUY CREATE, 28253.00\n", + "2023-03-24, Order Canceled/Margin/Rejected\n", + "2023-03-24, Close, 28186.28\n", + "2023-03-24, BUY CREATE, 28186.28\n", + "2023-03-24, Order Canceled/Margin/Rejected\n", + "2023-03-24, Close, 28219.98\n", + "2023-03-24, BUY CREATE, 28219.98\n", + "2023-03-24, Order Canceled/Margin/Rejected\n", + "2023-03-24, Close, 28130.41\n", + "2023-03-24, Close, 28284.45\n", + "2023-03-24, BUY CREATE, 28284.45\n", + "2023-03-24, Order Canceled/Margin/Rejected\n", + "2023-03-24, Close, 28262.83\n", + "2023-03-24, BUY CREATE, 28262.83\n", + "2023-03-24, Order Canceled/Margin/Rejected\n", + "2023-03-24, Close, 28274.59\n", + "2023-03-24, BUY CREATE, 28274.59\n", + "2023-03-24, Order Canceled/Margin/Rejected\n", + "2023-03-24, Close, 28034.37\n", + "2023-03-24, Close, 28041.11\n", + "2023-03-24, Close, 28039.71\n", + "2023-03-24, Close, 28080.00\n", + "2023-03-24, Close, 28080.00\n", + "2023-03-24, Close, 27989.06\n", + "2023-03-24, Close, 28018.04\n", + "2023-03-24, Close, 27831.33\n", + "2023-03-24, Close, 27609.99\n", + "2023-03-24, Close, 27740.01\n", + "2023-03-24, Close, 27821.60\n", + "2023-03-24, Close, 27584.82\n", + "2023-03-24, Close, 27335.14\n", + "2023-03-24, Close, 27298.05\n", + "2023-03-24, Close, 27454.47\n", + "2023-03-25, Close, 27556.35\n", + "2023-03-25, Close, 27498.54\n", + "2023-03-25, Close, 27599.66\n", + "2023-03-25, Close, 27581.65\n", + "2023-03-25, Close, 27535.25\n", + "2023-03-25, Close, 27458.73\n", + "2023-03-25, Close, 27495.66\n", + "2023-03-25, Close, 27485.36\n", + "2023-03-25, Close, 27422.56\n", + "2023-03-25, Close, 27481.96\n", + "2023-03-25, Close, 27477.01\n", + "2023-03-25, Close, 27457.20\n", + "2023-03-25, Close, 27451.71\n", + "2023-03-25, Close, 27566.96\n", + "2023-03-25, BUY CREATE, 27566.96\n", + "2023-03-25, Order Canceled/Margin/Rejected\n", + "2023-03-25, Close, 27527.06\n", + "2023-03-25, BUY CREATE, 27527.06\n", + "2023-03-25, BUY EXECUTED, Price: 27527.06, Cost: 137635.30, Comm 0.00\n", + "2023-03-25, Close, 27647.43\n", + "2023-03-25, Close, 27629.22\n", + "2023-03-25, Close, 27481.58\n", + "2023-03-25, SELL CREATE, 27481.58\n", + "2023-03-25, SELL EXECUTED, Price: 27481.57, Cost: 137635.30, Comm 0.00\n", + "2023-03-25, OPERATION PROFIT, GROSS -227.45, NET -227.45\n", + "2023-03-25, Close, 27442.92\n", + "2023-03-25, Close, 27189.68\n", + "2023-03-25, Close, 27354.72\n", + "2023-03-25, Close, 27411.54\n", + "2023-03-25, Close, 27447.32\n", + "2023-03-25, Close, 27462.95\n", + "2023-03-26, Close, 27531.28\n", + "2023-03-26, BUY CREATE, 27531.28\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27593.34\n", + "2023-03-26, BUY CREATE, 27593.34\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27589.64\n", + "2023-03-26, BUY CREATE, 27589.64\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27529.26\n", + "2023-03-26, BUY CREATE, 27529.26\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27516.61\n", + "2023-03-26, BUY CREATE, 27516.61\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27544.81\n", + "2023-03-26, BUY CREATE, 27544.81\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27496.68\n", + "2023-03-26, BUY CREATE, 27496.68\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27504.94\n", + "2023-03-26, BUY CREATE, 27504.94\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27659.20\n", + "2023-03-26, BUY CREATE, 27659.20\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27686.73\n", + "2023-03-26, BUY CREATE, 27686.73\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27678.63\n", + "2023-03-26, BUY CREATE, 27678.63\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27865.95\n", + "2023-03-26, BUY CREATE, 27865.95\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27919.74\n", + "2023-03-26, BUY CREATE, 27919.74\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 28149.99\n", + "2023-03-26, BUY CREATE, 28149.99\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27795.22\n", + "2023-03-26, BUY CREATE, 27795.22\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27803.89\n", + "2023-03-26, BUY CREATE, 27803.89\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27699.28\n", + "2023-03-26, BUY CREATE, 27699.28\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27837.82\n", + "2023-03-26, BUY CREATE, 27837.82\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27808.76\n", + "2023-03-26, BUY CREATE, 27808.76\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27827.95\n", + "2023-03-26, BUY CREATE, 27827.95\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27777.63\n", + "2023-03-26, BUY CREATE, 27777.63\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27838.11\n", + "2023-03-26, BUY CREATE, 27838.11\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 28040.29\n", + "2023-03-26, BUY CREATE, 28040.29\n", + "2023-03-26, Order Canceled/Margin/Rejected\n", + "2023-03-26, Close, 27968.05\n", + "2023-03-26, BUY CREATE, 27968.05\n", + "2023-03-27, Order Canceled/Margin/Rejected\n", + "2023-03-27, Close, 27994.28\n", + "2023-03-27, BUY CREATE, 27994.28\n", + "2023-03-27, Order Canceled/Margin/Rejected\n", + "2023-03-27, Close, 27826.98\n", + "2023-03-27, Close, 27879.16\n", + "2023-03-27, BUY CREATE, 27879.16\n", + "2023-03-27, Order Canceled/Margin/Rejected\n", + "2023-03-27, Close, 27888.68\n", + "2023-03-27, BUY CREATE, 27888.68\n", + "2023-03-27, Order Canceled/Margin/Rejected\n", + "2023-03-27, Close, 27906.98\n", + "2023-03-27, BUY CREATE, 27906.98\n", + "2023-03-27, Order Canceled/Margin/Rejected\n", + "2023-03-27, Close, 27715.18\n", + "2023-03-27, Close, 27785.85\n", + "2023-03-27, Close, 27808.81\n", + "2023-03-27, Close, 27848.53\n", + "2023-03-27, Close, 27925.63\n", + "2023-03-27, BUY CREATE, 27925.63\n", + "2023-03-27, Order Canceled/Margin/Rejected\n", + "2023-03-27, Close, 27915.39\n", + "2023-03-27, BUY CREATE, 27915.39\n", + "2023-03-27, Order Canceled/Margin/Rejected\n", + "2023-03-27, Close, 27892.69\n", + "2023-03-27, BUY CREATE, 27892.69\n", + "2023-03-27, Order Canceled/Margin/Rejected\n", + "2023-03-27, Close, 27749.99\n", + "2023-03-27, Close, 27692.99\n", + "2023-03-27, Close, 26960.38\n", + "2023-03-27, Close, 26903.62\n", + "2023-03-27, Close, 27145.50\n", + "2023-03-27, Close, 26960.00\n", + "2023-03-27, Close, 27090.81\n", + "2023-03-27, Close, 26968.94\n", + "2023-03-27, Close, 27043.84\n", + "2023-03-27, Close, 27170.63\n", + "2023-03-27, Close, 27099.99\n", + "2023-03-27, Close, 27124.91\n", + "2023-03-28, Close, 26960.92\n", + "2023-03-28, Close, 27074.81\n", + "2023-03-28, Close, 27037.58\n", + "2023-03-28, Close, 26971.71\n", + "2023-03-28, Close, 26964.60\n", + "2023-03-28, Close, 26974.63\n", + "2023-03-28, Close, 27070.52\n", + "2023-03-28, BUY CREATE, 27070.52\n", + "2023-03-28, BUY EXECUTED, Price: 27070.53, Cost: 135352.65, Comm 0.00\n", + "2023-03-28, Close, 26962.88\n", + "2023-03-28, SELL CREATE, 26962.88\n", + "2023-03-28, SELL EXECUTED, Price: 26962.89, Cost: 135352.65, Comm 0.00\n", + "2023-03-28, OPERATION PROFIT, GROSS -538.20, NET -538.20\n", + "2023-03-28, Close, 27013.68\n", + "2023-03-28, Close, 26875.03\n", + "2023-03-28, Close, 26740.96\n", + "2023-03-28, Close, 27057.36\n", + "2023-03-28, BUY CREATE, 27057.36\n", + "2023-03-28, BUY EXECUTED, Price: 27057.36, Cost: 135286.80, Comm 0.00\n", + "2023-03-28, Close, 26983.02\n", + "2023-03-28, SELL CREATE, 26983.02\n", + "2023-03-28, SELL EXECUTED, Price: 26983.02, Cost: 135286.80, Comm 0.00\n", + "2023-03-28, OPERATION PROFIT, GROSS -371.70, NET -371.70\n", + "2023-03-28, Close, 26881.97\n", + "2023-03-28, Close, 26943.01\n", + "2023-03-28, Close, 26998.63\n", + "2023-03-28, BUY CREATE, 26998.63\n", + "2023-03-28, BUY EXECUTED, Price: 26998.63, Cost: 134993.15, Comm 0.00\n", + "2023-03-28, Close, 26882.07\n", + "2023-03-28, SELL CREATE, 26882.07\n", + "2023-03-28, SELL EXECUTED, Price: 26882.07, Cost: 134993.15, Comm 0.00\n", + "2023-03-28, OPERATION PROFIT, GROSS -582.80, NET -582.80\n", + "2023-03-28, Close, 26863.20\n", + "2023-03-28, Close, 27344.13\n", + "2023-03-28, BUY CREATE, 27344.13\n", + "2023-03-28, Order Canceled/Margin/Rejected\n", + "2023-03-28, Close, 27425.99\n", + "2023-03-28, BUY CREATE, 27425.99\n", + "2023-03-28, Order Canceled/Margin/Rejected\n", + "2023-03-28, Close, 27307.20\n", + "2023-03-28, BUY CREATE, 27307.20\n", + "2023-03-28, Order Canceled/Margin/Rejected\n", + "2023-03-28, Close, 27190.54\n", + "2023-03-28, BUY CREATE, 27190.54\n", + "2023-03-28, Order Canceled/Margin/Rejected\n", + "2023-03-28, Close, 27218.39\n", + "2023-03-28, BUY CREATE, 27218.39\n", + "2023-03-28, Order Canceled/Margin/Rejected\n", + "2023-03-28, Close, 27261.07\n", + "2023-03-28, BUY CREATE, 27261.07\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 27268.73\n", + "2023-03-29, BUY CREATE, 27268.73\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 27325.78\n", + "2023-03-29, BUY CREATE, 27325.78\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 27395.00\n", + "2023-03-29, BUY CREATE, 27395.00\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 27367.45\n", + "2023-03-29, BUY CREATE, 27367.45\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 27568.07\n", + "2023-03-29, BUY CREATE, 27568.07\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 27544.14\n", + "2023-03-29, BUY CREATE, 27544.14\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28052.30\n", + "2023-03-29, BUY CREATE, 28052.30\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28086.82\n", + "2023-03-29, BUY CREATE, 28086.82\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28506.99\n", + "2023-03-29, BUY CREATE, 28506.99\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28319.89\n", + "2023-03-29, BUY CREATE, 28319.89\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28382.23\n", + "2023-03-29, BUY CREATE, 28382.23\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28353.99\n", + "2023-03-29, BUY CREATE, 28353.99\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28441.77\n", + "2023-03-29, BUY CREATE, 28441.77\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28425.91\n", + "2023-03-29, BUY CREATE, 28425.91\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28290.97\n", + "2023-03-29, BUY CREATE, 28290.97\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28442.79\n", + "2023-03-29, BUY CREATE, 28442.79\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28152.46\n", + "2023-03-29, BUY CREATE, 28152.46\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28252.33\n", + "2023-03-29, BUY CREATE, 28252.33\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28316.13\n", + "2023-03-29, BUY CREATE, 28316.13\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28419.49\n", + "2023-03-29, BUY CREATE, 28419.49\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28388.58\n", + "2023-03-29, BUY CREATE, 28388.58\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28291.00\n", + "2023-03-29, Close, 28389.41\n", + "2023-03-29, BUY CREATE, 28389.41\n", + "2023-03-29, Order Canceled/Margin/Rejected\n", + "2023-03-29, Close, 28348.60\n", + "2023-03-29, BUY CREATE, 28348.60\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28328.47\n", + "2023-03-30, Close, 28350.00\n", + "2023-03-30, BUY CREATE, 28350.00\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28964.76\n", + "2023-03-30, BUY CREATE, 28964.76\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28489.18\n", + "2023-03-30, BUY CREATE, 28489.18\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28587.64\n", + "2023-03-30, BUY CREATE, 28587.64\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28613.98\n", + "2023-03-30, BUY CREATE, 28613.98\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28613.88\n", + "2023-03-30, BUY CREATE, 28613.88\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28725.01\n", + "2023-03-30, BUY CREATE, 28725.01\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28572.81\n", + "2023-03-30, BUY CREATE, 28572.81\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28583.59\n", + "2023-03-30, BUY CREATE, 28583.59\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28602.48\n", + "2023-03-30, BUY CREATE, 28602.48\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28644.79\n", + "2023-03-30, BUY CREATE, 28644.79\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28646.35\n", + "2023-03-30, BUY CREATE, 28646.35\n", + "2023-03-30, Order Canceled/Margin/Rejected\n", + "2023-03-30, Close, 28517.96\n", + "2023-03-30, Close, 28428.47\n", + "2023-03-30, Close, 28300.33\n", + "2023-03-30, Close, 28247.27\n", + "2023-03-30, Close, 27839.41\n", + "2023-03-30, Close, 27903.69\n", + "2023-03-30, Close, 27986.09\n", + "2023-03-30, Close, 28149.80\n", + "2023-03-30, Close, 28068.50\n", + "2023-03-30, Close, 27898.59\n", + "2023-03-30, Close, 28028.53\n", + "2023-03-31, Close, 28249.17\n", + "2023-03-31, BUY CREATE, 28249.17\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28153.12\n", + "2023-03-31, Close, 28146.79\n", + "2023-03-31, Close, 28168.41\n", + "2023-03-31, BUY CREATE, 28168.41\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28179.60\n", + "2023-03-31, BUY CREATE, 28179.60\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28034.52\n", + "2023-03-31, Close, 28079.96\n", + "2023-03-31, BUY CREATE, 28079.96\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 27738.48\n", + "2023-03-31, Close, 27797.32\n", + "2023-03-31, Close, 27819.99\n", + "2023-03-31, Close, 27893.80\n", + "2023-03-31, Close, 27927.97\n", + "2023-03-31, Close, 28110.36\n", + "2023-03-31, BUY CREATE, 28110.36\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28370.78\n", + "2023-03-31, BUY CREATE, 28370.78\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28521.78\n", + "2023-03-31, BUY CREATE, 28521.78\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28494.99\n", + "2023-03-31, BUY CREATE, 28494.99\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28430.76\n", + "2023-03-31, BUY CREATE, 28430.76\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28334.53\n", + "2023-03-31, BUY CREATE, 28334.53\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28315.50\n", + "2023-03-31, BUY CREATE, 28315.50\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28469.31\n", + "2023-03-31, BUY CREATE, 28469.31\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28391.80\n", + "2023-03-31, BUY CREATE, 28391.80\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28477.19\n", + "2023-03-31, BUY CREATE, 28477.19\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28570.31\n", + "2023-03-31, BUY CREATE, 28570.31\n", + "2023-03-31, Order Canceled/Margin/Rejected\n", + "2023-03-31, Close, 28465.36\n", + "2023-03-31, BUY CREATE, 28465.36\n", + "2023-04-01, Order Canceled/Margin/Rejected\n", + "2023-04-01, Close, 28438.27\n", + "2023-04-01, BUY CREATE, 28438.27\n", + "2023-04-01, Order Canceled/Margin/Rejected\n", + "2023-04-01, Close, 28610.63\n", + "2023-04-01, BUY CREATE, 28610.63\n", + "2023-04-01, Order Canceled/Margin/Rejected\n", + "2023-04-01, Close, 28583.36\n", + "2023-04-01, BUY CREATE, 28583.36\n", + "2023-04-01, Order Canceled/Margin/Rejected\n", + "2023-04-01, Close, 28541.10\n", + "2023-04-01, BUY CREATE, 28541.10\n", + "2023-04-01, Order Canceled/Margin/Rejected\n", + "2023-04-01, Close, 28580.00\n", + "2023-04-01, BUY CREATE, 28580.00\n", + "2023-04-01, Order Canceled/Margin/Rejected\n", + "2023-04-01, Close, 28571.08\n", + "2023-04-01, BUY CREATE, 28571.08\n", + "2023-04-01, Order Canceled/Margin/Rejected\n", + "2023-04-01, Close, 28482.72\n", + "2023-04-01, Close, 28424.99\n", + "2023-04-01, Close, 28440.56\n", + "2023-04-01, Close, 28425.49\n", + "2023-04-01, Close, 28465.32\n", + "2023-04-01, Close, 28372.85\n", + "2023-04-01, Close, 28422.89\n", + "2023-04-01, Close, 28417.80\n", + "2023-04-01, Close, 28318.04\n", + "2023-04-01, Close, 28400.07\n", + "2023-04-01, Close, 28326.00\n", + "2023-04-01, Close, 28372.37\n", + "2023-04-01, Close, 28376.74\n", + "2023-04-01, Close, 28381.98\n", + "2023-04-01, Close, 28446.78\n", + "2023-04-01, BUY CREATE, 28446.78\n", + "2023-04-01, Order Canceled/Margin/Rejected\n", + "2023-04-01, Close, 28477.72\n", + "2023-04-01, BUY CREATE, 28477.72\n", + "2023-04-01, Order Canceled/Margin/Rejected\n", + "2023-04-01, Close, 28517.94\n", + "2023-04-01, BUY CREATE, 28517.94\n", + "2023-04-01, Order Canceled/Margin/Rejected\n", + "2023-04-01, Close, 28452.73\n", + "2023-04-01, BUY CREATE, 28452.73\n", + "2023-04-02, Order Canceled/Margin/Rejected\n", + "2023-04-02, Close, 28366.30\n", + "2023-04-02, Close, 28388.34\n", + "2023-04-02, Close, 28406.13\n", + "2023-04-02, BUY CREATE, 28406.13\n", + "2023-04-02, Order Canceled/Margin/Rejected\n", + "2023-04-02, Close, 28476.59\n", + "2023-04-02, BUY CREATE, 28476.59\n", + "2023-04-02, Order Canceled/Margin/Rejected\n", + "2023-04-02, Close, 28386.09\n", + "2023-04-02, Close, 28470.01\n", + "2023-04-02, BUY CREATE, 28470.01\n", + "2023-04-02, Order Canceled/Margin/Rejected\n", + "2023-04-02, Close, 28458.26\n", + "2023-04-02, BUY CREATE, 28458.26\n", + "2023-04-02, Order Canceled/Margin/Rejected\n", + "2023-04-02, Close, 28416.38\n", + "2023-04-02, Close, 28381.37\n", + "2023-04-02, Close, 28410.57\n", + "2023-04-02, Close, 28367.25\n", + "2023-04-02, Close, 28357.93\n", + "2023-04-02, Close, 28265.26\n", + "2023-04-02, Close, 28279.53\n", + "2023-04-02, Close, 28273.10\n", + "2023-04-02, Close, 28124.81\n", + "2023-04-02, Close, 28121.97\n", + "2023-04-02, Close, 28194.39\n", + "2023-04-02, Close, 28156.98\n", + "2023-04-02, Close, 27943.85\n", + "2023-04-02, Close, 28058.75\n", + "2023-04-02, Close, 28014.80\n", + "2023-04-02, Close, 28105.81\n", + "2023-04-02, Close, 28171.87\n", + "2023-04-03, Close, 28114.62\n", + "2023-04-03, Close, 27709.94\n", + "2023-04-03, Close, 27719.09\n", + "2023-04-03, Close, 27753.85\n", + "2023-04-03, Close, 27704.39\n", + "2023-04-03, Close, 27679.57\n", + "2023-04-03, Close, 27779.48\n", + "2023-04-03, Close, 27958.74\n", + "2023-04-03, BUY CREATE, 27958.74\n", + "2023-04-03, Order Canceled/Margin/Rejected\n", + "2023-04-03, Close, 28335.00\n", + "2023-04-03, BUY CREATE, 28335.00\n", + "2023-04-03, Order Canceled/Margin/Rejected\n", + "2023-04-03, Close, 28327.33\n", + "2023-04-03, BUY CREATE, 28327.33\n", + "2023-04-03, Order Canceled/Margin/Rejected\n", + "2023-04-03, Close, 28303.77\n", + "2023-04-03, BUY CREATE, 28303.77\n", + "2023-04-03, Order Canceled/Margin/Rejected\n", + "2023-04-03, Close, 28253.73\n", + "2023-04-03, BUY CREATE, 28253.73\n", + "2023-04-03, Order Canceled/Margin/Rejected\n", + "2023-04-03, Close, 28163.01\n", + "2023-04-03, BUY CREATE, 28163.01\n", + "2023-04-03, Order Canceled/Margin/Rejected\n", + "2023-04-03, Close, 28258.78\n", + "2023-04-03, BUY CREATE, 28258.78\n", + "2023-04-03, Order Canceled/Margin/Rejected\n", + "2023-04-03, Close, 27995.04\n", + "2023-04-03, Close, 28051.48\n", + "2023-04-03, BUY CREATE, 28051.48\n", + "2023-04-03, Order Canceled/Margin/Rejected\n", + "2023-04-03, Close, 27930.84\n", + "2023-04-03, Close, 27986.48\n", + "2023-04-03, Close, 28152.00\n", + "2023-04-03, BUY CREATE, 28152.00\n", + "2023-04-03, Order Canceled/Margin/Rejected\n", + "2023-04-03, Close, 28081.08\n", + "2023-04-03, Close, 27582.78\n", + "2023-04-03, Close, 27714.56\n", + "2023-04-03, Close, 27799.99\n", + "2023-04-03, Close, 27800.00\n", + "2023-04-04, Close, 27760.58\n", + "2023-04-04, Close, 27816.16\n", + "2023-04-04, Close, 27857.35\n", + "2023-04-04, Close, 27855.06\n", + "2023-04-04, Close, 27813.86\n", + "2023-04-04, Close, 27890.01\n", + "2023-04-04, BUY CREATE, 27890.01\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28078.14\n", + "2023-04-04, BUY CREATE, 28078.14\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28021.30\n", + "2023-04-04, BUY CREATE, 28021.30\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28103.48\n", + "2023-04-04, BUY CREATE, 28103.48\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28198.76\n", + "2023-04-04, BUY CREATE, 28198.76\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28219.63\n", + "2023-04-04, BUY CREATE, 28219.63\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28289.52\n", + "2023-04-04, BUY CREATE, 28289.52\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28267.68\n", + "2023-04-04, BUY CREATE, 28267.68\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28111.04\n", + "2023-04-04, BUY CREATE, 28111.04\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28123.00\n", + "2023-04-04, BUY CREATE, 28123.00\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28030.04\n", + "2023-04-04, Close, 28098.99\n", + "2023-04-04, BUY CREATE, 28098.99\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28226.99\n", + "2023-04-04, BUY CREATE, 28226.99\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28114.42\n", + "2023-04-04, BUY CREATE, 28114.42\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28189.25\n", + "2023-04-04, BUY CREATE, 28189.25\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28250.04\n", + "2023-04-04, BUY CREATE, 28250.04\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28223.62\n", + "2023-04-04, BUY CREATE, 28223.62\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28187.26\n", + "2023-04-04, BUY CREATE, 28187.26\n", + "2023-04-04, Order Canceled/Margin/Rejected\n", + "2023-04-04, Close, 28165.47\n", + "2023-04-05, Close, 28661.81\n", + "2023-04-05, BUY CREATE, 28661.81\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28571.41\n", + "2023-04-05, BUY CREATE, 28571.41\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28565.57\n", + "2023-04-05, BUY CREATE, 28565.57\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28544.72\n", + "2023-04-05, BUY CREATE, 28544.72\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28506.62\n", + "2023-04-05, BUY CREATE, 28506.62\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28582.84\n", + "2023-04-05, BUY CREATE, 28582.84\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28534.42\n", + "2023-04-05, BUY CREATE, 28534.42\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28525.21\n", + "2023-04-05, BUY CREATE, 28525.21\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28543.80\n", + "2023-04-05, BUY CREATE, 28543.80\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28508.76\n", + "2023-04-05, BUY CREATE, 28508.76\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28510.00\n", + "2023-04-05, BUY CREATE, 28510.00\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28554.38\n", + "2023-04-05, BUY CREATE, 28554.38\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28568.95\n", + "2023-04-05, BUY CREATE, 28568.95\n", + "2023-04-05, Order Canceled/Margin/Rejected\n", + "2023-04-05, Close, 28404.58\n", + "2023-04-05, Close, 28105.20\n", + "2023-04-05, Close, 28031.09\n", + "2023-04-05, Close, 27947.99\n", + "2023-04-05, Close, 28023.74\n", + "2023-04-05, Close, 28030.20\n", + "2023-04-05, Close, 28240.64\n", + "2023-04-05, Close, 28150.61\n", + "2023-04-05, Close, 28181.06\n", + "2023-04-05, Close, 28175.28\n", + "2023-04-05, Close, 28170.01\n", + "2023-04-06, Close, 27999.15\n", + "2023-04-06, Close, 28064.46\n", + "2023-04-06, Close, 28039.73\n", + "2023-04-06, Close, 28128.42\n", + "2023-04-06, BUY CREATE, 28128.42\n", + "2023-04-06, Order Canceled/Margin/Rejected\n", + "2023-04-06, Close, 28068.91\n", + "2023-04-06, Close, 28036.75\n", + "2023-04-06, Close, 28063.91\n", + "2023-04-06, Close, 27910.97\n", + "2023-04-06, Close, 27953.62\n", + "2023-04-06, Close, 27904.04\n", + "2023-04-06, Close, 27850.00\n", + "2023-04-06, Close, 27945.52\n", + "2023-04-06, Close, 27903.73\n", + "2023-04-06, Close, 27891.16\n", + "2023-04-06, Close, 27952.78\n", + "2023-04-06, Close, 28090.39\n", + "2023-04-06, BUY CREATE, 28090.39\n", + "2023-04-06, Order Canceled/Margin/Rejected\n", + "2023-04-06, Close, 28065.14\n", + "2023-04-06, BUY CREATE, 28065.14\n", + "2023-04-06, Order Canceled/Margin/Rejected\n", + "2023-04-06, Close, 28041.40\n", + "2023-04-06, BUY CREATE, 28041.40\n", + "2023-04-06, Order Canceled/Margin/Rejected\n", + "2023-04-06, Close, 27963.35\n", + "2023-04-06, Close, 28017.77\n", + "2023-04-06, BUY CREATE, 28017.77\n", + "2023-04-06, Order Canceled/Margin/Rejected\n", + "2023-04-06, Close, 27975.85\n", + "2023-04-06, BUY CREATE, 27975.85\n", + "2023-04-06, Order Canceled/Margin/Rejected\n", + "2023-04-06, Close, 27989.16\n", + "2023-04-06, BUY CREATE, 27989.16\n", + "2023-04-06, Order Canceled/Margin/Rejected\n", + "2023-04-06, Close, 28007.86\n", + "2023-04-06, BUY CREATE, 28007.86\n", + "2023-04-06, Order Canceled/Margin/Rejected\n", + "2023-04-06, Close, 28033.82\n", + "2023-04-06, BUY CREATE, 28033.82\n", + "2023-04-07, Order Canceled/Margin/Rejected\n", + "2023-04-07, Close, 28097.99\n", + "2023-04-07, BUY CREATE, 28097.99\n", + "2023-04-07, Order Canceled/Margin/Rejected\n", + "2023-04-07, Close, 28056.51\n", + "2023-04-07, BUY CREATE, 28056.51\n", + "2023-04-07, Order Canceled/Margin/Rejected\n", + "2023-04-07, Close, 28017.22\n", + "2023-04-07, BUY CREATE, 28017.22\n", + "2023-04-07, Order Canceled/Margin/Rejected\n", + "2023-04-07, Close, 28038.66\n", + "2023-04-07, BUY CREATE, 28038.66\n", + "2023-04-07, Order Canceled/Margin/Rejected\n", + "2023-04-07, Close, 28021.77\n", + "2023-04-07, Close, 27980.00\n", + "2023-04-07, Close, 27960.09\n", + "2023-04-07, Close, 27839.78\n", + "2023-04-07, Close, 27816.76\n", + "2023-04-07, Close, 27869.48\n", + "2023-04-07, Close, 27933.36\n", + "2023-04-07, Close, 27840.90\n", + "2023-04-07, Close, 27892.63\n", + "2023-04-07, Close, 27896.93\n", + "2023-04-07, Close, 27914.64\n", + "2023-04-07, Close, 27944.10\n", + "2023-04-07, BUY CREATE, 27944.10\n", + "2023-04-07, Order Canceled/Margin/Rejected\n", + "2023-04-07, Close, 27879.30\n", + "2023-04-07, Close, 27911.51\n", + "2023-04-07, Close, 27891.77\n", + "2023-04-07, Close, 27897.52\n", + "2023-04-07, Close, 27864.20\n", + "2023-04-07, Close, 27891.13\n", + "2023-04-07, BUY CREATE, 27891.13\n", + "2023-04-07, Order Canceled/Margin/Rejected\n", + "2023-04-07, Close, 27955.99\n", + "2023-04-07, BUY CREATE, 27955.99\n", + "2023-04-07, Order Canceled/Margin/Rejected\n", + "2023-04-07, Close, 27906.33\n", + "2023-04-07, BUY CREATE, 27906.33\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 27880.27\n", + "2023-04-08, Close, 27903.24\n", + "2023-04-08, BUY CREATE, 27903.24\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 27956.76\n", + "2023-04-08, BUY CREATE, 27956.76\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 28023.39\n", + "2023-04-08, BUY CREATE, 28023.39\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 27984.98\n", + "2023-04-08, BUY CREATE, 27984.98\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 28140.92\n", + "2023-04-08, BUY CREATE, 28140.92\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 28113.12\n", + "2023-04-08, BUY CREATE, 28113.12\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 28086.22\n", + "2023-04-08, BUY CREATE, 28086.22\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 28025.53\n", + "2023-04-08, BUY CREATE, 28025.53\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 28032.49\n", + "2023-04-08, BUY CREATE, 28032.49\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 28011.62\n", + "2023-04-08, BUY CREATE, 28011.62\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 28016.09\n", + "2023-04-08, BUY CREATE, 28016.09\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 27987.57\n", + "2023-04-08, Close, 28020.66\n", + "2023-04-08, BUY CREATE, 28020.66\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 28027.67\n", + "2023-04-08, BUY CREATE, 28027.67\n", + "2023-04-08, Order Canceled/Margin/Rejected\n", + "2023-04-08, Close, 28014.70\n", + "2023-04-08, Close, 28002.53\n", + "2023-04-08, Close, 27935.11\n", + "2023-04-08, Close, 27904.38\n", + "2023-04-08, Close, 27924.13\n", + "2023-04-08, Close, 27911.69\n", + "2023-04-08, Close, 27929.80\n", + "2023-04-08, Close, 27937.77\n", + "2023-04-08, Close, 27938.38\n", + "2023-04-09, Close, 28036.76\n", + "2023-04-09, BUY CREATE, 28036.76\n", + "2023-04-09, Order Canceled/Margin/Rejected\n", + "2023-04-09, Close, 28077.78\n", + "2023-04-09, BUY CREATE, 28077.78\n", + "2023-04-09, Order Canceled/Margin/Rejected\n", + "2023-04-09, Close, 28036.30\n", + "2023-04-09, BUY CREATE, 28036.30\n", + "2023-04-09, Order Canceled/Margin/Rejected\n", + "2023-04-09, Close, 28027.71\n", + "2023-04-09, BUY CREATE, 28027.71\n", + "2023-04-09, Order Canceled/Margin/Rejected\n", + "2023-04-09, Close, 28037.39\n", + "2023-04-09, BUY CREATE, 28037.39\n", + "2023-04-09, Order Canceled/Margin/Rejected\n", + "2023-04-09, Close, 27999.25\n", + "2023-04-09, BUY CREATE, 27999.25\n", + "2023-04-09, Order Canceled/Margin/Rejected\n", + "2023-04-09, Close, 27880.13\n", + "2023-04-09, Close, 27903.02\n", + "2023-04-09, Close, 27881.64\n", + "2023-04-09, Close, 27898.58\n", + "2023-04-09, Close, 27893.22\n", + "2023-04-09, Close, 27930.20\n", + "2023-04-09, Close, 27930.07\n", + "2023-04-09, Close, 27905.62\n", + "2023-04-09, Close, 27866.49\n", + "2023-04-09, Close, 27891.91\n", + "2023-04-09, Close, 27896.98\n", + "2023-04-09, Close, 27906.68\n", + "2023-04-09, Close, 28026.72\n", + "2023-04-09, BUY CREATE, 28026.72\n", + "2023-04-09, Order Canceled/Margin/Rejected\n", + "2023-04-09, Close, 28140.40\n", + "2023-04-09, BUY CREATE, 28140.40\n", + "2023-04-09, Order Canceled/Margin/Rejected\n", + "2023-04-09, Close, 28114.63\n", + "2023-04-09, BUY CREATE, 28114.63\n", + "2023-04-09, Order Canceled/Margin/Rejected\n", + "2023-04-09, Close, 28437.19\n", + "2023-04-09, BUY CREATE, 28437.19\n", + "2023-04-09, Order Canceled/Margin/Rejected\n", + "2023-04-09, Close, 28371.39\n", + "2023-04-09, BUY CREATE, 28371.39\n", + "2023-04-09, Order Canceled/Margin/Rejected\n", + "2023-04-09, Close, 28323.76\n", + "2023-04-09, BUY CREATE, 28323.76\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28381.25\n", + "2023-04-10, BUY CREATE, 28381.25\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28304.05\n", + "2023-04-10, BUY CREATE, 28304.05\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28296.00\n", + "2023-04-10, BUY CREATE, 28296.00\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28278.45\n", + "2023-04-10, BUY CREATE, 28278.45\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28234.51\n", + "2023-04-10, BUY CREATE, 28234.51\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28282.16\n", + "2023-04-10, BUY CREATE, 28282.16\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28277.94\n", + "2023-04-10, BUY CREATE, 28277.94\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28284.57\n", + "2023-04-10, BUY CREATE, 28284.57\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28295.16\n", + "2023-04-10, BUY CREATE, 28295.16\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28310.29\n", + "2023-04-10, BUY CREATE, 28310.29\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28331.88\n", + "2023-04-10, BUY CREATE, 28331.88\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28305.60\n", + "2023-04-10, Close, 28277.86\n", + "2023-04-10, Close, 28217.46\n", + "2023-04-10, Close, 28305.43\n", + "2023-04-10, BUY CREATE, 28305.43\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 28439.38\n", + "2023-04-10, BUY CREATE, 28439.38\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 29036.85\n", + "2023-04-10, BUY CREATE, 29036.85\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 29160.00\n", + "2023-04-10, BUY CREATE, 29160.00\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 29273.14\n", + "2023-04-10, BUY CREATE, 29273.14\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 29173.06\n", + "2023-04-10, BUY CREATE, 29173.06\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 29115.11\n", + "2023-04-10, BUY CREATE, 29115.11\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 29222.34\n", + "2023-04-10, BUY CREATE, 29222.34\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 29594.00\n", + "2023-04-10, BUY CREATE, 29594.00\n", + "2023-04-10, Order Canceled/Margin/Rejected\n", + "2023-04-10, Close, 29637.34\n", + "2023-04-10, BUY CREATE, 29637.34\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 29928.86\n", + "2023-04-11, BUY CREATE, 29928.86\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30189.90\n", + "2023-04-11, BUY CREATE, 30189.90\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30083.01\n", + "2023-04-11, BUY CREATE, 30083.01\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30115.95\n", + "2023-04-11, BUY CREATE, 30115.95\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30109.01\n", + "2023-04-11, BUY CREATE, 30109.01\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 29883.84\n", + "2023-04-11, BUY CREATE, 29883.84\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30035.78\n", + "2023-04-11, BUY CREATE, 30035.78\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30106.89\n", + "2023-04-11, BUY CREATE, 30106.89\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30093.90\n", + "2023-04-11, BUY CREATE, 30093.90\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30052.38\n", + "2023-04-11, BUY CREATE, 30052.38\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30122.50\n", + "2023-04-11, BUY CREATE, 30122.50\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30055.15\n", + "2023-04-11, BUY CREATE, 30055.15\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30098.92\n", + "2023-04-11, BUY CREATE, 30098.92\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30246.31\n", + "2023-04-11, BUY CREATE, 30246.31\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30060.39\n", + "2023-04-11, Close, 30194.22\n", + "2023-04-11, BUY CREATE, 30194.22\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30127.98\n", + "2023-04-11, BUY CREATE, 30127.98\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30207.57\n", + "2023-04-11, BUY CREATE, 30207.57\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30230.24\n", + "2023-04-11, BUY CREATE, 30230.24\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30130.02\n", + "2023-04-11, BUY CREATE, 30130.02\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30164.23\n", + "2023-04-11, BUY CREATE, 30164.23\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30189.52\n", + "2023-04-11, BUY CREATE, 30189.52\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30263.75\n", + "2023-04-11, BUY CREATE, 30263.75\n", + "2023-04-11, Order Canceled/Margin/Rejected\n", + "2023-04-11, Close, 30200.42\n", + "2023-04-11, BUY CREATE, 30200.42\n", + "2023-04-12, Order Canceled/Margin/Rejected\n", + "2023-04-12, Close, 30224.78\n", + "2023-04-12, BUY CREATE, 30224.78\n", + "2023-04-12, Order Canceled/Margin/Rejected\n", + "2023-04-12, Close, 30170.80\n", + "2023-04-12, Close, 29916.16\n", + "2023-04-12, Close, 29922.04\n", + "2023-04-12, Close, 29978.58\n", + "2023-04-12, Close, 29920.00\n", + "2023-04-12, Close, 29932.89\n", + "2023-04-12, Close, 29987.00\n", + "2023-04-12, Close, 29914.97\n", + "2023-04-12, Close, 30007.68\n", + "2023-04-12, Close, 29996.27\n", + "2023-04-12, Close, 30016.30\n", + "2023-04-12, Close, 30157.09\n", + "2023-04-12, BUY CREATE, 30157.09\n", + "2023-04-12, Order Canceled/Margin/Rejected\n", + "2023-04-12, Close, 30053.73\n", + "2023-04-12, BUY CREATE, 30053.73\n", + "2023-04-12, Order Canceled/Margin/Rejected\n", + "2023-04-12, Close, 30024.69\n", + "2023-04-12, BUY CREATE, 30024.69\n", + "2023-04-12, Order Canceled/Margin/Rejected\n", + "2023-04-12, Close, 29964.02\n", + "2023-04-12, Close, 29939.02\n", + "2023-04-12, Close, 30023.92\n", + "2023-04-12, BUY CREATE, 30023.92\n", + "2023-04-12, Order Canceled/Margin/Rejected\n", + "2023-04-12, Close, 29917.26\n", + "2023-04-12, Close, 29798.59\n", + "2023-04-12, Close, 29947.47\n", + "2023-04-12, Close, 29944.12\n", + "2023-04-12, Close, 29841.35\n", + "2023-04-12, Close, 29888.07\n", + "2023-04-13, Close, 29984.69\n", + "2023-04-13, BUY CREATE, 29984.69\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30065.13\n", + "2023-04-13, BUY CREATE, 30065.13\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30116.51\n", + "2023-04-13, BUY CREATE, 30116.51\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30072.17\n", + "2023-04-13, BUY CREATE, 30072.17\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30053.65\n", + "2023-04-13, BUY CREATE, 30053.65\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30105.08\n", + "2023-04-13, BUY CREATE, 30105.08\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30016.54\n", + "2023-04-13, BUY CREATE, 30016.54\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30068.60\n", + "2023-04-13, BUY CREATE, 30068.60\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30188.14\n", + "2023-04-13, BUY CREATE, 30188.14\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30204.85\n", + "2023-04-13, BUY CREATE, 30204.85\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30203.14\n", + "2023-04-13, BUY CREATE, 30203.14\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30159.82\n", + "2023-04-13, BUY CREATE, 30159.82\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30272.14\n", + "2023-04-13, BUY CREATE, 30272.14\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30175.75\n", + "2023-04-13, BUY CREATE, 30175.75\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30435.34\n", + "2023-04-13, BUY CREATE, 30435.34\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30441.43\n", + "2023-04-13, BUY CREATE, 30441.43\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30322.37\n", + "2023-04-13, BUY CREATE, 30322.37\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30425.85\n", + "2023-04-13, BUY CREATE, 30425.85\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30440.78\n", + "2023-04-13, BUY CREATE, 30440.78\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30335.13\n", + "2023-04-13, BUY CREATE, 30335.13\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30251.97\n", + "2023-04-13, Close, 30283.70\n", + "2023-04-13, BUY CREATE, 30283.70\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30296.09\n", + "2023-04-13, BUY CREATE, 30296.09\n", + "2023-04-13, Order Canceled/Margin/Rejected\n", + "2023-04-13, Close, 30373.84\n", + "2023-04-13, BUY CREATE, 30373.84\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30745.73\n", + "2023-04-14, BUY CREATE, 30745.73\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30775.34\n", + "2023-04-14, BUY CREATE, 30775.34\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30595.80\n", + "2023-04-14, BUY CREATE, 30595.80\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30690.88\n", + "2023-04-14, BUY CREATE, 30690.88\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30708.82\n", + "2023-04-14, BUY CREATE, 30708.82\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30796.28\n", + "2023-04-14, BUY CREATE, 30796.28\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30942.87\n", + "2023-04-14, BUY CREATE, 30942.87\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30733.72\n", + "2023-04-14, BUY CREATE, 30733.72\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30730.22\n", + "2023-04-14, BUY CREATE, 30730.22\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30794.16\n", + "2023-04-14, BUY CREATE, 30794.16\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30766.01\n", + "2023-04-14, BUY CREATE, 30766.01\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30801.89\n", + "2023-04-14, BUY CREATE, 30801.89\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30616.98\n", + "2023-04-14, Close, 30721.54\n", + "2023-04-14, BUY CREATE, 30721.54\n", + "2023-04-14, Order Canceled/Margin/Rejected\n", + "2023-04-14, Close, 30599.89\n", + "2023-04-14, Close, 30237.89\n", + "2023-04-14, Close, 30147.49\n", + "2023-04-14, Close, 30276.62\n", + "2023-04-14, Close, 30277.10\n", + "2023-04-14, Close, 30324.09\n", + "2023-04-14, Close, 30448.82\n", + "2023-04-14, Close, 30454.09\n", + "2023-04-14, Close, 30435.34\n", + "2023-04-14, Close, 30466.93\n", + "2023-04-15, Close, 30372.48\n", + "2023-04-15, Close, 30370.01\n", + "2023-04-15, Close, 30380.00\n", + "2023-04-15, Close, 30376.14\n", + "2023-04-15, Close, 30356.11\n", + "2023-04-15, Close, 30427.05\n", + "2023-04-15, BUY CREATE, 30427.05\n", + "2023-04-15, Order Canceled/Margin/Rejected\n", + "2023-04-15, Close, 30390.99\n", + "2023-04-15, BUY CREATE, 30390.99\n", + "2023-04-15, Order Canceled/Margin/Rejected\n", + "2023-04-15, Close, 30433.30\n", + "2023-04-15, BUY CREATE, 30433.30\n", + "2023-04-15, Order Canceled/Margin/Rejected\n", + "2023-04-15, Close, 30385.12\n", + "2023-04-15, Close, 30459.94\n", + "2023-04-15, BUY CREATE, 30459.94\n", + "2023-04-15, Order Canceled/Margin/Rejected\n", + "2023-04-15, Close, 30417.07\n", + "2023-04-15, BUY CREATE, 30417.07\n", + "2023-04-15, Order Canceled/Margin/Rejected\n", + "2023-04-15, Close, 30385.30\n", + "2023-04-15, Close, 30423.28\n", + "2023-04-15, BUY CREATE, 30423.28\n", + "2023-04-15, Order Canceled/Margin/Rejected\n", + "2023-04-15, Close, 30335.19\n", + "2023-04-15, Close, 30359.39\n", + "2023-04-15, Close, 30325.27\n", + "2023-04-15, Close, 30319.98\n", + "2023-04-15, Close, 30246.21\n", + "2023-04-15, Close, 30300.77\n", + "2023-04-15, Close, 30331.74\n", + "2023-04-15, Close, 30280.65\n", + "2023-04-15, Close, 30263.77\n", + "2023-04-15, Close, 30350.98\n", + "2023-04-15, BUY CREATE, 30350.98\n", + "2023-04-15, Order Canceled/Margin/Rejected\n", + "2023-04-15, Close, 30295.09\n", + "2023-04-16, Close, 30277.54\n", + "2023-04-16, Close, 30236.95\n", + "2023-04-16, Close, 30264.20\n", + "2023-04-16, Close, 30249.37\n", + "2023-04-16, Close, 30298.52\n", + "2023-04-16, BUY CREATE, 30298.52\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30306.32\n", + "2023-04-16, BUY CREATE, 30306.32\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30306.07\n", + "2023-04-16, BUY CREATE, 30306.07\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30344.97\n", + "2023-04-16, BUY CREATE, 30344.97\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30337.40\n", + "2023-04-16, BUY CREATE, 30337.40\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30279.34\n", + "2023-04-16, Close, 30290.15\n", + "2023-04-16, Close, 30226.45\n", + "2023-04-16, Close, 30260.00\n", + "2023-04-16, Close, 30249.99\n", + "2023-04-16, Close, 30311.83\n", + "2023-04-16, BUY CREATE, 30311.83\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30332.98\n", + "2023-04-16, BUY CREATE, 30332.98\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30335.00\n", + "2023-04-16, BUY CREATE, 30335.00\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30300.00\n", + "2023-04-16, BUY CREATE, 30300.00\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30478.43\n", + "2023-04-16, BUY CREATE, 30478.43\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30309.06\n", + "2023-04-16, Close, 30343.04\n", + "2023-04-16, BUY CREATE, 30343.04\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30385.62\n", + "2023-04-16, BUY CREATE, 30385.62\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30331.04\n", + "2023-04-16, BUY CREATE, 30331.04\n", + "2023-04-16, Order Canceled/Margin/Rejected\n", + "2023-04-16, Close, 30304.65\n", + "2023-04-17, Close, 29842.86\n", + "2023-04-17, Close, 29946.22\n", + "2023-04-17, Close, 30020.00\n", + "2023-04-17, Close, 29982.80\n", + "2023-04-17, Close, 29981.18\n", + "2023-04-17, Close, 29997.89\n", + "2023-04-17, Close, 29901.28\n", + "2023-04-17, Close, 29838.30\n", + "2023-04-17, Close, 29918.10\n", + "2023-04-17, Close, 29876.97\n", + "2023-04-17, Close, 29884.66\n", + "2023-04-17, Close, 29570.81\n", + "2023-04-17, Close, 29529.85\n", + "2023-04-17, Close, 29402.20\n", + "2023-04-17, Close, 29440.42\n", + "2023-04-17, Close, 29358.31\n", + "2023-04-17, Close, 29464.43\n", + "2023-04-17, Close, 29462.67\n", + "2023-04-17, Close, 29524.97\n", + "2023-04-17, Close, 29467.24\n", + "2023-04-17, Close, 29443.75\n", + "2023-04-17, Close, 29452.22\n", + "2023-04-17, Close, 29502.28\n", + "2023-04-17, Close, 29430.27\n", + "2023-04-18, Close, 29364.16\n", + "2023-04-18, Close, 29373.53\n", + "2023-04-18, Close, 29465.84\n", + "2023-04-18, BUY CREATE, 29465.84\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 29446.99\n", + "2023-04-18, BUY CREATE, 29446.99\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 29494.69\n", + "2023-04-18, BUY CREATE, 29494.69\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 29542.14\n", + "2023-04-18, BUY CREATE, 29542.14\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 29720.98\n", + "2023-04-18, BUY CREATE, 29720.98\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 29775.62\n", + "2023-04-18, BUY CREATE, 29775.62\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 29703.89\n", + "2023-04-18, BUY CREATE, 29703.89\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 29897.68\n", + "2023-04-18, BUY CREATE, 29897.68\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 29899.26\n", + "2023-04-18, BUY CREATE, 29899.26\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30380.59\n", + "2023-04-18, BUY CREATE, 30380.59\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30303.14\n", + "2023-04-18, BUY CREATE, 30303.14\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30381.31\n", + "2023-04-18, BUY CREATE, 30381.31\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30247.81\n", + "2023-04-18, BUY CREATE, 30247.81\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30184.86\n", + "2023-04-18, BUY CREATE, 30184.86\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30220.85\n", + "2023-04-18, BUY CREATE, 30220.85\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30025.51\n", + "2023-04-18, BUY CREATE, 30025.51\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30144.50\n", + "2023-04-18, BUY CREATE, 30144.50\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30221.52\n", + "2023-04-18, BUY CREATE, 30221.52\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30419.12\n", + "2023-04-18, BUY CREATE, 30419.12\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30371.69\n", + "2023-04-18, BUY CREATE, 30371.69\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30370.86\n", + "2023-04-18, BUY CREATE, 30370.86\n", + "2023-04-18, Order Canceled/Margin/Rejected\n", + "2023-04-18, Close, 30380.01\n", + "2023-04-18, BUY CREATE, 30380.01\n", + "2023-04-19, Order Canceled/Margin/Rejected\n", + "2023-04-19, Close, 30319.25\n", + "2023-04-19, BUY CREATE, 30319.25\n", + "2023-04-19, Order Canceled/Margin/Rejected\n", + "2023-04-19, Close, 30233.42\n", + "2023-04-19, Close, 30200.63\n", + "2023-04-19, Close, 30211.23\n", + "2023-04-19, Close, 30202.57\n", + "2023-04-19, Close, 30268.27\n", + "2023-04-19, BUY CREATE, 30268.27\n", + "2023-04-19, Order Canceled/Margin/Rejected\n", + "2023-04-19, Close, 30008.13\n", + "2023-04-19, Close, 30077.76\n", + "2023-04-19, Close, 29168.47\n", + "2023-04-19, Close, 29200.57\n", + "2023-04-19, Close, 29257.26\n", + "2023-04-19, Close, 29310.65\n", + "2023-04-19, Close, 29218.66\n", + "2023-04-19, Close, 29333.00\n", + "2023-04-19, Close, 29393.46\n", + "2023-04-19, Close, 29260.44\n", + "2023-04-19, Close, 29315.24\n", + "2023-04-19, Close, 29318.14\n", + "2023-04-19, Close, 29277.45\n", + "2023-04-19, Close, 29227.07\n", + "2023-04-19, Close, 29237.71\n", + "2023-04-19, Close, 29170.00\n", + "2023-04-19, Close, 29076.20\n", + "2023-04-19, Close, 28797.10\n", + "2023-04-20, Close, 28920.01\n", + "2023-04-20, Close, 28934.07\n", + "2023-04-20, Close, 28742.57\n", + "2023-04-20, Close, 28862.52\n", + "2023-04-20, Close, 28867.52\n", + "2023-04-20, Close, 28893.52\n", + "2023-04-20, Close, 28925.58\n", + "2023-04-20, Close, 28869.66\n", + "2023-04-20, Close, 28826.60\n", + "2023-04-20, Close, 28866.00\n", + "2023-04-20, Close, 28855.22\n", + "2023-04-20, Close, 28607.13\n", + "2023-04-20, Close, 28893.00\n", + "2023-04-20, BUY CREATE, 28893.00\n", + "2023-04-20, Order Canceled/Margin/Rejected\n", + "2023-04-20, Close, 28820.08\n", + "2023-04-20, Close, 28719.71\n", + "2023-04-20, Close, 28506.69\n", + "2023-04-20, Close, 28442.56\n", + "2023-04-20, Close, 28452.20\n", + "2023-04-20, Close, 28360.49\n", + "2023-04-20, Close, 28104.38\n", + "2023-04-20, Close, 28204.56\n", + "2023-04-20, Close, 28230.40\n", + "2023-04-20, Close, 28249.10\n", + "2023-04-20, Close, 28243.65\n", + "2023-04-21, Close, 28291.26\n", + "2023-04-21, Close, 28200.91\n", + "2023-04-21, Close, 28247.50\n", + "2023-04-21, Close, 28321.41\n", + "2023-04-21, Close, 28236.16\n", + "2023-04-21, Close, 28158.21\n", + "2023-04-21, Close, 27916.88\n", + "2023-04-21, Close, 28155.03\n", + "2023-04-21, Close, 28071.90\n", + "2023-04-21, Close, 28060.85\n", + "2023-04-21, Close, 28001.96\n", + "2023-04-21, Close, 28066.21\n", + "2023-04-21, Close, 28218.64\n", + "2023-04-21, BUY CREATE, 28218.64\n", + "2023-04-21, Order Canceled/Margin/Rejected\n", + "2023-04-21, Close, 28113.44\n", + "2023-04-21, Close, 28060.86\n", + "2023-04-21, Close, 28040.70\n", + "2023-04-21, Close, 28042.71\n", + "2023-04-21, Close, 27901.63\n", + "2023-04-21, Close, 27783.96\n", + "2023-04-21, Close, 27279.91\n", + "2023-04-21, Close, 27270.88\n", + "2023-04-21, Close, 27279.99\n", + "2023-04-21, Close, 27266.08\n", + "2023-04-21, Close, 27262.84\n", + "2023-04-22, Close, 27225.08\n", + "2023-04-22, Close, 27291.67\n", + "2023-04-22, Close, 27241.52\n", + "2023-04-22, Close, 27322.16\n", + "2023-04-22, Close, 27347.99\n", + "2023-04-22, Close, 27397.63\n", + "2023-04-22, Close, 27346.50\n", + "2023-04-22, Close, 27277.76\n", + "2023-04-22, Close, 27211.42\n", + "2023-04-22, Close, 27239.06\n", + "2023-04-22, Close, 27250.04\n", + "2023-04-22, Close, 27286.65\n", + "2023-04-22, BUY CREATE, 27286.65\n", + "2023-04-22, Order Canceled/Margin/Rejected\n", + "2023-04-22, Close, 27338.04\n", + "2023-04-22, BUY CREATE, 27338.04\n", + "2023-04-22, Order Canceled/Margin/Rejected\n", + "2023-04-22, Close, 27254.99\n", + "2023-04-22, Close, 27476.09\n", + "2023-04-22, BUY CREATE, 27476.09\n", + "2023-04-22, Order Canceled/Margin/Rejected\n", + "2023-04-22, Close, 27488.93\n", + "2023-04-22, BUY CREATE, 27488.93\n", + "2023-04-22, Order Canceled/Margin/Rejected\n", + "2023-04-22, Close, 27586.57\n", + "2023-04-22, BUY CREATE, 27586.57\n", + "2023-04-22, Order Canceled/Margin/Rejected\n", + "2023-04-22, Close, 27668.63\n", + "2023-04-22, BUY CREATE, 27668.63\n", + "2023-04-22, Order Canceled/Margin/Rejected\n", + "2023-04-22, Close, 27601.29\n", + "2023-04-22, BUY CREATE, 27601.29\n", + "2023-04-22, Order Canceled/Margin/Rejected\n", + "2023-04-22, Close, 27622.61\n", + "2023-04-22, BUY CREATE, 27622.61\n", + "2023-04-22, Order Canceled/Margin/Rejected\n", + "2023-04-22, Close, 27634.45\n", + "2023-04-22, BUY CREATE, 27634.45\n", + "2023-04-22, Order Canceled/Margin/Rejected\n", + "2023-04-22, Close, 27669.09\n", + "2023-04-22, BUY CREATE, 27669.09\n", + "2023-04-22, Order Canceled/Margin/Rejected\n", + "2023-04-22, Close, 27853.28\n", + "2023-04-22, BUY CREATE, 27853.28\n", + "2023-04-22, Order Canceled/Margin/Rejected\n", + "2023-04-22, Close, 27816.85\n", + "2023-04-22, BUY CREATE, 27816.85\n", + "2023-04-23, Order Canceled/Margin/Rejected\n", + "2023-04-23, Close, 27541.80\n", + "2023-04-23, BUY CREATE, 27541.80\n", + "2023-04-23, Order Canceled/Margin/Rejected\n", + "2023-04-23, Close, 27551.15\n", + "2023-04-23, Close, 27592.02\n", + "2023-04-23, BUY CREATE, 27592.02\n", + "2023-04-23, Order Canceled/Margin/Rejected\n", + "2023-04-23, Close, 27557.84\n", + "2023-04-23, Close, 27605.82\n", + "2023-04-23, Close, 27585.14\n", + "2023-04-23, Close, 27588.14\n", + "2023-04-23, Close, 27718.90\n", + "2023-04-23, BUY CREATE, 27718.90\n", + "2023-04-23, Order Canceled/Margin/Rejected\n", + "2023-04-23, Close, 27710.51\n", + "2023-04-23, BUY CREATE, 27710.51\n", + "2023-04-23, Order Canceled/Margin/Rejected\n", + "2023-04-23, Close, 27628.95\n", + "2023-04-23, Close, 27527.61\n", + "2023-04-23, Close, 27642.90\n", + "2023-04-23, BUY CREATE, 27642.90\n", + "2023-04-23, Order Canceled/Margin/Rejected\n", + "2023-04-23, Close, 27605.99\n", + "2023-04-23, Close, 27630.76\n", + "2023-04-23, BUY CREATE, 27630.76\n", + "2023-04-23, Order Canceled/Margin/Rejected\n", + "2023-04-23, Close, 27552.51\n", + "2023-04-23, Close, 27474.47\n", + "2023-04-23, Close, 27584.42\n", + "2023-04-23, Close, 27512.97\n", + "2023-04-23, Close, 27455.70\n", + "2023-04-23, Close, 27465.77\n", + "2023-04-23, Close, 27504.62\n", + "2023-04-23, Close, 27517.83\n", + "2023-04-23, Close, 27591.73\n", + "2023-04-23, BUY CREATE, 27591.73\n", + "2023-04-23, Order Canceled/Margin/Rejected\n", + "2023-04-23, Close, 27590.60\n", + "2023-04-23, BUY CREATE, 27590.60\n", + "2023-04-24, Order Canceled/Margin/Rejected\n", + "2023-04-24, Close, 27807.49\n", + "2023-04-24, BUY CREATE, 27807.49\n", + "2023-04-24, Order Canceled/Margin/Rejected\n", + "2023-04-24, Close, 27752.48\n", + "2023-04-24, BUY CREATE, 27752.48\n", + "2023-04-24, Order Canceled/Margin/Rejected\n", + "2023-04-24, Close, 27745.17\n", + "2023-04-24, BUY CREATE, 27745.17\n", + "2023-04-24, Order Canceled/Margin/Rejected\n", + "2023-04-24, Close, 27790.48\n", + "2023-04-24, BUY CREATE, 27790.48\n", + "2023-04-24, Order Canceled/Margin/Rejected\n", + "2023-04-24, Close, 27702.34\n", + "2023-04-24, BUY CREATE, 27702.34\n", + "2023-04-24, Order Canceled/Margin/Rejected\n", + "2023-04-24, Close, 27654.83\n", + "2023-04-24, BUY CREATE, 27654.83\n", + "2023-04-24, Order Canceled/Margin/Rejected\n", + "2023-04-24, Close, 27546.68\n", + "2023-04-24, Close, 27451.97\n", + "2023-04-24, Close, 27185.75\n", + "2023-04-24, Close, 27313.10\n", + "2023-04-24, Close, 27418.91\n", + "2023-04-24, Close, 27550.84\n", + "2023-04-24, Close, 27443.85\n", + "2023-04-24, Close, 27624.25\n", + "2023-04-24, BUY CREATE, 27624.25\n", + "2023-04-24, Order Canceled/Margin/Rejected\n", + "2023-04-24, Close, 27430.19\n", + "2023-04-24, Close, 27267.05\n", + "2023-04-24, Close, 27110.55\n", + "2023-04-24, Close, 27381.49\n", + "2023-04-24, Close, 27339.90\n", + "2023-04-24, Close, 27383.29\n", + "2023-04-24, Close, 27460.44\n", + "2023-04-24, BUY CREATE, 27460.44\n", + "2023-04-24, Order Canceled/Margin/Rejected\n", + "2023-04-24, Close, 27414.64\n", + "2023-04-24, BUY CREATE, 27414.64\n", + "2023-04-24, Order Canceled/Margin/Rejected\n", + "2023-04-24, Close, 27463.87\n", + "2023-04-24, BUY CREATE, 27463.87\n", + "2023-04-24, Order Canceled/Margin/Rejected\n", + "2023-04-24, Close, 27510.93\n", + "2023-04-24, BUY CREATE, 27510.93\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 27459.04\n", + "2023-04-25, BUY CREATE, 27459.04\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 27403.24\n", + "2023-04-25, Close, 27402.81\n", + "2023-04-25, Close, 27345.72\n", + "2023-04-25, Close, 27410.00\n", + "2023-04-25, BUY CREATE, 27410.00\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 27413.20\n", + "2023-04-25, BUY CREATE, 27413.20\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 27357.31\n", + "2023-04-25, Close, 27266.54\n", + "2023-04-25, Close, 27430.87\n", + "2023-04-25, BUY CREATE, 27430.87\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 27323.00\n", + "2023-04-25, Close, 27331.01\n", + "2023-04-25, Close, 27390.96\n", + "2023-04-25, Close, 27394.26\n", + "2023-04-25, BUY CREATE, 27394.26\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 27344.62\n", + "2023-04-25, Close, 27294.69\n", + "2023-04-25, Close, 27345.00\n", + "2023-04-25, Close, 27393.27\n", + "2023-04-25, BUY CREATE, 27393.27\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 27617.65\n", + "2023-04-25, BUY CREATE, 27617.65\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 27577.66\n", + "2023-04-25, BUY CREATE, 27577.66\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 27611.40\n", + "2023-04-25, BUY CREATE, 27611.40\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 27975.01\n", + "2023-04-25, BUY CREATE, 27975.01\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 28262.89\n", + "2023-04-25, BUY CREATE, 28262.89\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 28233.25\n", + "2023-04-25, BUY CREATE, 28233.25\n", + "2023-04-25, Order Canceled/Margin/Rejected\n", + "2023-04-25, Close, 28300.79\n", + "2023-04-25, BUY CREATE, 28300.79\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 28299.63\n", + "2023-04-26, BUY CREATE, 28299.63\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 28392.01\n", + "2023-04-26, BUY CREATE, 28392.01\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 28389.28\n", + "2023-04-26, BUY CREATE, 28389.28\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 28309.10\n", + "2023-04-26, BUY CREATE, 28309.10\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 28328.94\n", + "2023-04-26, BUY CREATE, 28328.94\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 28395.25\n", + "2023-04-26, BUY CREATE, 28395.25\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 28395.01\n", + "2023-04-26, BUY CREATE, 28395.01\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 28376.18\n", + "2023-04-26, BUY CREATE, 28376.18\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 28727.19\n", + "2023-04-26, BUY CREATE, 28727.19\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 28867.50\n", + "2023-04-26, BUY CREATE, 28867.50\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 28998.82\n", + "2023-04-26, BUY CREATE, 28998.82\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 28952.32\n", + "2023-04-26, BUY CREATE, 28952.32\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 29965.45\n", + "2023-04-26, BUY CREATE, 29965.45\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 29847.06\n", + "2023-04-26, BUY CREATE, 29847.06\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 29700.22\n", + "2023-04-26, BUY CREATE, 29700.22\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 29820.03\n", + "2023-04-26, BUY CREATE, 29820.03\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 29810.28\n", + "2023-04-26, BUY CREATE, 29810.28\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 29720.92\n", + "2023-04-26, BUY CREATE, 29720.92\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 29741.53\n", + "2023-04-26, BUY CREATE, 29741.53\n", + "2023-04-26, Order Canceled/Margin/Rejected\n", + "2023-04-26, Close, 27884.24\n", + "2023-04-26, Close, 28413.39\n", + "2023-04-26, Close, 28677.65\n", + "2023-04-26, Close, 28298.25\n", + "2023-04-26, Close, 28415.29\n", + "2023-04-27, Close, 29225.54\n", + "2023-04-27, BUY CREATE, 29225.54\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 28741.72\n", + "2023-04-27, Close, 29034.33\n", + "2023-04-27, Close, 28885.79\n", + "2023-04-27, Close, 29096.12\n", + "2023-04-27, BUY CREATE, 29096.12\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 29083.11\n", + "2023-04-27, BUY CREATE, 29083.11\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 28793.30\n", + "2023-04-27, Close, 28893.83\n", + "2023-04-27, BUY CREATE, 28893.83\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 28955.43\n", + "2023-04-27, BUY CREATE, 28955.43\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 28931.71\n", + "2023-04-27, BUY CREATE, 28931.71\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 28990.77\n", + "2023-04-27, BUY CREATE, 28990.77\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 28934.21\n", + "2023-04-27, BUY CREATE, 28934.21\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 28862.13\n", + "2023-04-27, Close, 28936.32\n", + "2023-04-27, BUY CREATE, 28936.32\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 28974.54\n", + "2023-04-27, BUY CREATE, 28974.54\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 29149.73\n", + "2023-04-27, BUY CREATE, 29149.73\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 29129.75\n", + "2023-04-27, BUY CREATE, 29129.75\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 29296.14\n", + "2023-04-27, BUY CREATE, 29296.14\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 29772.12\n", + "2023-04-27, BUY CREATE, 29772.12\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 29673.98\n", + "2023-04-27, BUY CREATE, 29673.98\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 29619.30\n", + "2023-04-27, BUY CREATE, 29619.30\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 29647.07\n", + "2023-04-27, BUY CREATE, 29647.07\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 29385.20\n", + "2023-04-27, BUY CREATE, 29385.20\n", + "2023-04-27, Order Canceled/Margin/Rejected\n", + "2023-04-27, Close, 29472.77\n", + "2023-04-27, BUY CREATE, 29472.77\n", + "2023-04-28, Order Canceled/Margin/Rejected\n", + "2023-04-28, Close, 29554.25\n", + "2023-04-28, BUY CREATE, 29554.25\n", + "2023-04-28, Order Canceled/Margin/Rejected\n", + "2023-04-28, Close, 29516.32\n", + "2023-04-28, BUY CREATE, 29516.32\n", + "2023-04-28, Order Canceled/Margin/Rejected\n", + "2023-04-28, Close, 29395.89\n", + "2023-04-28, BUY CREATE, 29395.89\n", + "2023-04-28, Order Canceled/Margin/Rejected\n", + "2023-04-28, Close, 29420.52\n", + "2023-04-28, BUY CREATE, 29420.52\n", + "2023-04-28, Order Canceled/Margin/Rejected\n", + "2023-04-28, Close, 29501.91\n", + "2023-04-28, BUY CREATE, 29501.91\n", + "2023-04-28, Order Canceled/Margin/Rejected\n", + "2023-04-28, Close, 29473.95\n", + "2023-04-28, BUY CREATE, 29473.95\n", + "2023-04-28, Order Canceled/Margin/Rejected\n", + "2023-04-28, Close, 29467.12\n", + "2023-04-28, Close, 29488.83\n", + "2023-04-28, Close, 29251.98\n", + "2023-04-28, Close, 29199.44\n", + "2023-04-28, Close, 29262.33\n", + "2023-04-28, Close, 29235.36\n", + "2023-04-28, Close, 29229.29\n", + "2023-04-28, Close, 29029.48\n", + "2023-04-28, Close, 29096.69\n", + "2023-04-28, Close, 29146.89\n", + "2023-04-28, Close, 29273.42\n", + "2023-04-28, Close, 29239.36\n", + "2023-04-28, Close, 29242.66\n", + "2023-04-28, Close, 29328.53\n", + "2023-04-28, BUY CREATE, 29328.53\n", + "2023-04-28, Order Canceled/Margin/Rejected\n", + "2023-04-28, Close, 29338.01\n", + "2023-04-28, BUY CREATE, 29338.01\n", + "2023-04-28, Order Canceled/Margin/Rejected\n", + "2023-04-28, Close, 29328.60\n", + "2023-04-28, BUY CREATE, 29328.60\n", + "2023-04-28, Order Canceled/Margin/Rejected\n", + "2023-04-28, Close, 29345.34\n", + "2023-04-28, BUY CREATE, 29345.34\n", + "2023-04-28, Order Canceled/Margin/Rejected\n", + "2023-04-28, Close, 29311.70\n", + "2023-04-28, BUY CREATE, 29311.70\n", + "2023-04-29, Order Canceled/Margin/Rejected\n", + "2023-04-29, Close, 29262.02\n", + "2023-04-29, BUY CREATE, 29262.02\n", + "2023-04-29, Order Canceled/Margin/Rejected\n", + "2023-04-29, Close, 29272.64\n", + "2023-04-29, BUY CREATE, 29272.64\n", + "2023-04-29, Order Canceled/Margin/Rejected\n", + "2023-04-29, Close, 29374.87\n", + "2023-04-29, BUY CREATE, 29374.87\n", + "2023-04-29, Order Canceled/Margin/Rejected\n", + "2023-04-29, Close, 29345.74\n", + "2023-04-29, BUY CREATE, 29345.74\n", + "2023-04-29, Order Canceled/Margin/Rejected\n", + "2023-04-29, Close, 29372.66\n", + "2023-04-29, BUY CREATE, 29372.66\n", + "2023-04-29, Order Canceled/Margin/Rejected\n", + "2023-04-29, Close, 29356.03\n", + "2023-04-29, BUY CREATE, 29356.03\n", + "2023-04-29, Order Canceled/Margin/Rejected\n", + "2023-04-29, Close, 29328.64\n", + "2023-04-29, BUY CREATE, 29328.64\n", + "2023-04-29, Order Canceled/Margin/Rejected\n", + "2023-04-29, Close, 29345.54\n", + "2023-04-29, BUY CREATE, 29345.54\n", + "2023-04-29, Order Canceled/Margin/Rejected\n", + "2023-04-29, Close, 29313.87\n", + "2023-04-29, Close, 29298.84\n", + "2023-04-29, Close, 29267.56\n", + "2023-04-29, Close, 29332.11\n", + "2023-04-29, BUY CREATE, 29332.11\n", + "2023-04-29, Order Canceled/Margin/Rejected\n", + "2023-04-29, Close, 29281.37\n", + "2023-04-29, Close, 29384.10\n", + "2023-04-29, BUY CREATE, 29384.10\n", + "2023-04-29, Order Canceled/Margin/Rejected\n", + "2023-04-29, Close, 29336.06\n", + "2023-04-29, BUY CREATE, 29336.06\n", + "2023-04-29, Order Canceled/Margin/Rejected\n", + "2023-04-29, Close, 29271.21\n", + "2023-04-29, Close, 29281.78\n", + "2023-04-29, Close, 29155.24\n", + "2023-04-29, Close, 29176.00\n", + "2023-04-29, Close, 29240.67\n", + "2023-04-29, Close, 29221.43\n", + "2023-04-29, Close, 29230.00\n", + "2023-04-29, Close, 29200.65\n", + "2023-04-29, Close, 29230.45\n", + "2023-04-30, Close, 29136.00\n", + "2023-04-30, Close, 29096.99\n", + "2023-04-30, Close, 29176.96\n", + "2023-04-30, Close, 29178.87\n", + "2023-04-30, Close, 29210.61\n", + "2023-04-30, BUY CREATE, 29210.61\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29258.49\n", + "2023-04-30, BUY CREATE, 29258.49\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29271.38\n", + "2023-04-30, BUY CREATE, 29271.38\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29266.43\n", + "2023-04-30, BUY CREATE, 29266.43\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29269.99\n", + "2023-04-30, BUY CREATE, 29269.99\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29258.60\n", + "2023-04-30, BUY CREATE, 29258.60\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29221.93\n", + "2023-04-30, BUY CREATE, 29221.93\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29197.01\n", + "2023-04-30, Close, 29238.20\n", + "2023-04-30, BUY CREATE, 29238.20\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29292.51\n", + "2023-04-30, BUY CREATE, 29292.51\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29395.01\n", + "2023-04-30, BUY CREATE, 29395.01\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29655.18\n", + "2023-04-30, BUY CREATE, 29655.18\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29717.55\n", + "2023-04-30, BUY CREATE, 29717.55\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29644.37\n", + "2023-04-30, BUY CREATE, 29644.37\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29577.09\n", + "2023-04-30, BUY CREATE, 29577.09\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29361.13\n", + "2023-04-30, Close, 29329.89\n", + "2023-04-30, Close, 29411.21\n", + "2023-04-30, BUY CREATE, 29411.21\n", + "2023-04-30, Order Canceled/Margin/Rejected\n", + "2023-04-30, Close, 29378.72\n", + "2023-04-30, Close, 29233.21\n", + "2023-05-01, Close, 29315.57\n", + "2023-05-01, Close, 28504.36\n", + "2023-05-01, Close, 28549.41\n", + "2023-05-01, Close, 28561.06\n", + "2023-05-01, Close, 28555.00\n", + "2023-05-01, Close, 28483.68\n", + "2023-05-01, Close, 28594.34\n", + "2023-05-01, Close, 28629.09\n", + "2023-05-01, Close, 28574.45\n", + "2023-05-01, Close, 28524.98\n", + "2023-05-01, Close, 28552.43\n", + "2023-05-01, Close, 28523.86\n", + "2023-05-01, Close, 28596.32\n", + "2023-05-01, Close, 28457.84\n", + "2023-05-01, Close, 28473.30\n", + "2023-05-01, Close, 28170.64\n", + "2023-05-01, Close, 28360.80\n", + "2023-05-01, Close, 28278.22\n", + "2023-05-01, Close, 28173.83\n", + "2023-05-01, Close, 27843.36\n", + "2023-05-01, Close, 27678.09\n", + "2023-05-01, Close, 27985.46\n", + "2023-05-01, Close, 28020.01\n", + "2023-05-01, Close, 28068.26\n", + "2023-05-02, Close, 28050.42\n", + "2023-05-02, Close, 27942.87\n", + "2023-05-02, Close, 28008.52\n", + "2023-05-02, Close, 28043.76\n", + "2023-05-02, Close, 27927.69\n", + "2023-05-02, Close, 28000.01\n", + "2023-05-02, Close, 27999.10\n", + "2023-05-02, Close, 28057.47\n", + "2023-05-02, BUY CREATE, 28057.47\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28028.54\n", + "2023-05-02, BUY CREATE, 28028.54\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 27983.20\n", + "2023-05-02, BUY CREATE, 27983.20\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28016.52\n", + "2023-05-02, BUY CREATE, 28016.52\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28084.83\n", + "2023-05-02, BUY CREATE, 28084.83\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28106.95\n", + "2023-05-02, BUY CREATE, 28106.95\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28009.07\n", + "2023-05-02, Close, 28374.22\n", + "2023-05-02, BUY CREATE, 28374.22\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28540.68\n", + "2023-05-02, BUY CREATE, 28540.68\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28468.58\n", + "2023-05-02, BUY CREATE, 28468.58\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28583.52\n", + "2023-05-02, BUY CREATE, 28583.52\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28718.90\n", + "2023-05-02, BUY CREATE, 28718.90\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28686.14\n", + "2023-05-02, BUY CREATE, 28686.14\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28675.98\n", + "2023-05-02, BUY CREATE, 28675.98\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28660.46\n", + "2023-05-02, BUY CREATE, 28660.46\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28736.91\n", + "2023-05-02, BUY CREATE, 28736.91\n", + "2023-05-02, Order Canceled/Margin/Rejected\n", + "2023-05-02, Close, 28669.86\n", + "2023-05-02, BUY CREATE, 28669.86\n", + "2023-05-03, Order Canceled/Margin/Rejected\n", + "2023-05-03, Close, 28503.72\n", + "2023-05-03, BUY CREATE, 28503.72\n", + "2023-05-03, Order Canceled/Margin/Rejected\n", + "2023-05-03, Close, 28542.06\n", + "2023-05-03, BUY CREATE, 28542.06\n", + "2023-05-03, Order Canceled/Margin/Rejected\n", + "2023-05-03, Close, 28508.62\n", + "2023-05-03, Close, 28520.90\n", + "2023-05-03, Close, 28514.99\n", + "2023-05-03, Close, 28477.19\n", + "2023-05-03, Close, 28600.02\n", + "2023-05-03, BUY CREATE, 28600.02\n", + "2023-05-03, Order Canceled/Margin/Rejected\n", + "2023-05-03, Close, 28653.80\n", + "2023-05-03, BUY CREATE, 28653.80\n", + "2023-05-03, Order Canceled/Margin/Rejected\n", + "2023-05-03, Close, 28691.21\n", + "2023-05-03, BUY CREATE, 28691.21\n", + "2023-05-03, Order Canceled/Margin/Rejected\n", + "2023-05-03, Close, 28665.36\n", + "2023-05-03, BUY CREATE, 28665.36\n", + "2023-05-03, Order Canceled/Margin/Rejected\n", + "2023-05-03, Close, 28573.49\n", + "2023-05-03, Close, 28543.74\n", + "2023-05-03, Close, 28306.53\n", + "2023-05-03, Close, 28373.55\n", + "2023-05-03, Close, 28215.86\n", + "2023-05-03, Close, 28311.51\n", + "2023-05-03, Close, 28476.96\n", + "2023-05-03, Close, 28576.70\n", + "2023-05-03, BUY CREATE, 28576.70\n", + "2023-05-03, Order Canceled/Margin/Rejected\n", + "2023-05-03, Close, 28444.29\n", + "2023-05-03, Close, 28322.98\n", + "2023-05-03, Close, 28518.72\n", + "2023-05-03, BUY CREATE, 28518.72\n", + "2023-05-03, Order Canceled/Margin/Rejected\n", + "2023-05-03, Close, 28923.52\n", + "2023-05-03, BUY CREATE, 28923.52\n", + "2023-05-03, Order Canceled/Margin/Rejected\n", + "2023-05-03, Close, 29107.13\n", + "2023-05-03, BUY CREATE, 29107.13\n", + "2023-05-03, Order Canceled/Margin/Rejected\n", + "2023-05-03, Close, 29026.16\n", + "2023-05-03, BUY CREATE, 29026.16\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29043.94\n", + "2023-05-04, BUY CREATE, 29043.94\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29070.67\n", + "2023-05-04, BUY CREATE, 29070.67\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29060.61\n", + "2023-05-04, BUY CREATE, 29060.61\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29096.86\n", + "2023-05-04, BUY CREATE, 29096.86\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29102.33\n", + "2023-05-04, BUY CREATE, 29102.33\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29203.90\n", + "2023-05-04, BUY CREATE, 29203.90\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29166.72\n", + "2023-05-04, BUY CREATE, 29166.72\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29058.19\n", + "2023-05-04, BUY CREATE, 29058.19\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29089.26\n", + "2023-05-04, BUY CREATE, 29089.26\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29088.97\n", + "2023-05-04, BUY CREATE, 29088.97\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29243.62\n", + "2023-05-04, BUY CREATE, 29243.62\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29154.66\n", + "2023-05-04, BUY CREATE, 29154.66\n", + "2023-05-04, Order Canceled/Margin/Rejected\n", + "2023-05-04, Close, 29054.84\n", + "2023-05-04, Close, 28761.51\n", + "2023-05-04, Close, 28783.65\n", + "2023-05-04, Close, 28866.19\n", + "2023-05-04, Close, 28924.82\n", + "2023-05-04, Close, 28842.29\n", + "2023-05-04, Close, 28799.23\n", + "2023-05-04, Close, 28895.12\n", + "2023-05-04, Close, 28870.16\n", + "2023-05-04, Close, 28839.98\n", + "2023-05-04, Close, 28779.90\n", + "2023-05-04, Close, 28838.16\n", + "2023-05-05, Close, 28937.63\n", + "2023-05-05, BUY CREATE, 28937.63\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29325.74\n", + "2023-05-05, BUY CREATE, 29325.74\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29246.26\n", + "2023-05-05, BUY CREATE, 29246.26\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29198.23\n", + "2023-05-05, BUY CREATE, 29198.23\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29228.08\n", + "2023-05-05, BUY CREATE, 29228.08\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29198.00\n", + "2023-05-05, BUY CREATE, 29198.00\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29163.80\n", + "2023-05-05, BUY CREATE, 29163.80\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29062.29\n", + "2023-05-05, BUY CREATE, 29062.29\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29058.00\n", + "2023-05-05, BUY CREATE, 29058.00\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29101.00\n", + "2023-05-05, BUY CREATE, 29101.00\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29110.68\n", + "2023-05-05, BUY CREATE, 29110.68\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29149.36\n", + "2023-05-05, BUY CREATE, 29149.36\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 28952.39\n", + "2023-05-05, Close, 29175.57\n", + "2023-05-05, BUY CREATE, 29175.57\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29259.19\n", + "2023-05-05, BUY CREATE, 29259.19\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29356.45\n", + "2023-05-05, BUY CREATE, 29356.45\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29586.93\n", + "2023-05-05, BUY CREATE, 29586.93\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29460.39\n", + "2023-05-05, BUY CREATE, 29460.39\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29399.16\n", + "2023-05-05, BUY CREATE, 29399.16\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29561.66\n", + "2023-05-05, BUY CREATE, 29561.66\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29493.12\n", + "2023-05-05, BUY CREATE, 29493.12\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29486.78\n", + "2023-05-05, BUY CREATE, 29486.78\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29589.73\n", + "2023-05-05, BUY CREATE, 29589.73\n", + "2023-05-05, Order Canceled/Margin/Rejected\n", + "2023-05-05, Close, 29505.61\n", + "2023-05-05, BUY CREATE, 29505.61\n", + "2023-05-06, Order Canceled/Margin/Rejected\n", + "2023-05-06, Close, 29671.11\n", + "2023-05-06, BUY CREATE, 29671.11\n", + "2023-05-06, Order Canceled/Margin/Rejected\n", + "2023-05-06, Close, 29541.39\n", + "2023-05-06, BUY CREATE, 29541.39\n", + "2023-05-06, Order Canceled/Margin/Rejected\n", + "2023-05-06, Close, 29463.76\n", + "2023-05-06, BUY CREATE, 29463.76\n", + "2023-05-06, Order Canceled/Margin/Rejected\n", + "2023-05-06, Close, 29353.61\n", + "2023-05-06, Close, 29343.31\n", + "2023-05-06, Close, 29346.99\n", + "2023-05-06, Close, 29386.17\n", + "2023-05-06, Close, 29363.35\n", + "2023-05-06, Close, 29330.12\n", + "2023-05-06, Close, 29285.06\n", + "2023-05-06, Close, 29238.57\n", + "2023-05-06, Close, 29266.15\n", + "2023-05-06, Close, 29096.85\n", + "2023-05-06, Close, 28935.84\n", + "2023-05-06, Close, 28606.61\n", + "2023-05-06, Close, 28576.61\n", + "2023-05-06, Close, 28701.53\n", + "2023-05-06, Close, 28771.89\n", + "2023-05-06, Close, 28912.43\n", + "2023-05-06, Close, 28842.82\n", + "2023-05-06, Close, 28795.89\n", + "2023-05-06, Close, 28807.43\n", + "2023-05-06, Close, 28835.12\n", + "2023-05-06, Close, 28848.20\n", + "2023-05-07, Close, 28942.72\n", + "2023-05-07, BUY CREATE, 28942.72\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28887.79\n", + "2023-05-07, BUY CREATE, 28887.79\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28816.20\n", + "2023-05-07, Close, 28798.56\n", + "2023-05-07, Close, 28840.03\n", + "2023-05-07, BUY CREATE, 28840.03\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28890.00\n", + "2023-05-07, BUY CREATE, 28890.00\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28914.55\n", + "2023-05-07, BUY CREATE, 28914.55\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28910.41\n", + "2023-05-07, BUY CREATE, 28910.41\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28857.06\n", + "2023-05-07, Close, 28815.77\n", + "2023-05-07, Close, 28847.74\n", + "2023-05-07, Close, 28840.06\n", + "2023-05-07, Close, 28919.07\n", + "2023-05-07, BUY CREATE, 28919.07\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28920.00\n", + "2023-05-07, BUY CREATE, 28920.00\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 29045.71\n", + "2023-05-07, BUY CREATE, 29045.71\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28942.67\n", + "2023-05-07, BUY CREATE, 28942.67\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28953.65\n", + "2023-05-07, BUY CREATE, 28953.65\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28904.56\n", + "2023-05-07, BUY CREATE, 28904.56\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28857.62\n", + "2023-05-07, Close, 28907.73\n", + "2023-05-07, BUY CREATE, 28907.73\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28912.07\n", + "2023-05-07, BUY CREATE, 28912.07\n", + "2023-05-07, Order Canceled/Margin/Rejected\n", + "2023-05-07, Close, 28772.83\n", + "2023-05-07, Close, 28739.22\n", + "2023-05-07, Close, 28430.10\n", + "2023-05-08, Close, 28572.17\n", + "2023-05-08, Close, 28220.34\n", + "2023-05-08, Close, 28284.98\n", + "2023-05-08, Close, 28199.71\n", + "2023-05-08, Close, 28125.00\n", + "2023-05-08, Close, 28260.47\n", + "2023-05-08, Close, 28170.75\n", + "2023-05-08, Close, 27975.48\n", + "2023-05-08, Close, 27704.94\n", + "2023-05-08, Close, 27914.94\n", + "2023-05-08, Close, 27936.14\n", + "2023-05-08, Close, 27934.09\n", + "2023-05-08, Close, 27766.81\n", + "2023-05-08, Close, 27855.78\n", + "2023-05-08, Close, 27970.53\n", + "2023-05-08, Close, 27887.58\n", + "2023-05-08, Close, 27867.20\n", + "2023-05-08, Close, 27530.00\n", + "2023-05-08, Close, 27475.26\n", + "2023-05-08, Close, 27340.72\n", + "2023-05-08, Close, 27534.91\n", + "2023-05-08, Close, 27541.41\n", + "2023-05-08, Close, 27653.09\n", + "2023-05-08, Close, 27668.79\n", + "2023-05-09, Close, 27578.26\n", + "2023-05-09, Close, 27701.39\n", + "2023-05-09, BUY CREATE, 27701.39\n", + "2023-05-09, Order Canceled/Margin/Rejected\n", + "2023-05-09, Close, 27641.55\n", + "2023-05-09, Close, 27629.34\n", + "2023-05-09, Close, 27608.96\n", + "2023-05-09, Close, 27549.70\n", + "2023-05-09, Close, 27547.76\n", + "2023-05-09, Close, 27666.64\n", + "2023-05-09, BUY CREATE, 27666.64\n", + "2023-05-09, Order Canceled/Margin/Rejected\n", + "2023-05-09, Close, 27569.87\n", + "2023-05-09, Close, 27579.99\n", + "2023-05-09, Close, 27584.56\n", + "2023-05-09, Close, 27678.31\n", + "2023-05-09, BUY CREATE, 27678.31\n", + "2023-05-09, Order Canceled/Margin/Rejected\n", + "2023-05-09, Close, 27758.34\n", + "2023-05-09, BUY CREATE, 27758.34\n", + "2023-05-09, Order Canceled/Margin/Rejected\n", + "2023-05-09, Close, 27619.30\n", + "2023-05-09, Close, 27540.31\n", + "2023-05-09, Close, 27400.39\n", + "2023-05-09, Close, 27699.14\n", + "2023-05-09, BUY CREATE, 27699.14\n", + "2023-05-09, Order Canceled/Margin/Rejected\n", + "2023-05-09, Close, 27614.43\n", + "2023-05-09, BUY CREATE, 27614.43\n", + "2023-05-09, Order Canceled/Margin/Rejected\n", + "2023-05-09, Close, 27556.34\n", + "2023-05-09, Close, 27716.32\n", + "2023-05-09, BUY CREATE, 27716.32\n", + "2023-05-09, Order Canceled/Margin/Rejected\n", + "2023-05-09, Close, 27649.22\n", + "2023-05-09, BUY CREATE, 27649.22\n", + "2023-05-09, Order Canceled/Margin/Rejected\n", + "2023-05-09, Close, 27602.74\n", + "2023-05-09, Close, 27579.61\n", + "2023-05-09, Close, 27628.27\n", + "2023-05-09, BUY CREATE, 27628.27\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 27747.06\n", + "2023-05-10, BUY CREATE, 27747.06\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 27697.98\n", + "2023-05-10, BUY CREATE, 27697.98\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 27671.74\n", + "2023-05-10, BUY CREATE, 27671.74\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 27685.29\n", + "2023-05-10, BUY CREATE, 27685.29\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 27689.78\n", + "2023-05-10, BUY CREATE, 27689.78\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 27655.55\n", + "2023-05-10, BUY CREATE, 27655.55\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 27628.27\n", + "2023-05-10, Close, 27542.26\n", + "2023-05-10, Close, 27572.48\n", + "2023-05-10, Close, 27577.70\n", + "2023-05-10, Close, 27590.09\n", + "2023-05-10, Close, 27677.09\n", + "2023-05-10, BUY CREATE, 27677.09\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 28175.28\n", + "2023-05-10, BUY CREATE, 28175.28\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 28169.76\n", + "2023-05-10, BUY CREATE, 28169.76\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 28089.31\n", + "2023-05-10, BUY CREATE, 28089.31\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 28153.20\n", + "2023-05-10, BUY CREATE, 28153.20\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 28182.17\n", + "2023-05-10, BUY CREATE, 28182.17\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 27498.72\n", + "2023-05-10, Close, 27432.18\n", + "2023-05-10, Close, 27692.26\n", + "2023-05-10, Close, 27857.22\n", + "2023-05-10, BUY CREATE, 27857.22\n", + "2023-05-10, Order Canceled/Margin/Rejected\n", + "2023-05-10, Close, 27508.57\n", + "2023-05-10, Close, 27670.34\n", + "2023-05-10, Close, 27598.75\n", + "2023-05-11, Close, 27515.09\n", + "2023-05-11, Close, 27554.12\n", + "2023-05-11, Close, 27503.66\n", + "2023-05-11, Close, 27446.90\n", + "2023-05-11, Close, 27493.55\n", + "2023-05-11, Close, 27528.85\n", + "2023-05-11, Close, 27504.52\n", + "2023-05-11, Close, 27450.07\n", + "2023-05-11, Close, 27390.46\n", + "2023-05-11, Close, 27417.47\n", + "2023-05-11, Close, 27459.86\n", + "2023-05-11, Close, 27405.61\n", + "2023-05-11, Close, 27399.00\n", + "2023-05-11, Close, 27206.61\n", + "2023-05-11, Close, 27121.19\n", + "2023-05-11, Close, 27179.42\n", + "2023-05-11, Close, 27129.17\n", + "2023-05-11, Close, 26907.28\n", + "2023-05-11, Close, 26963.73\n", + "2023-05-11, Close, 26843.05\n", + "2023-05-11, Close, 26996.18\n", + "2023-05-11, Close, 26977.99\n", + "2023-05-11, Close, 26903.81\n", + "2023-05-11, Close, 26968.62\n", + "2023-05-12, Close, 27033.78\n", + "2023-05-12, Close, 26878.48\n", + "2023-05-12, Close, 26646.70\n", + "2023-05-12, Close, 26584.32\n", + "2023-05-12, Close, 26654.19\n", + "2023-05-12, Close, 26276.67\n", + "2023-05-12, Close, 26299.75\n", + "2023-05-12, Close, 26311.52\n", + "2023-05-12, Close, 26289.12\n", + "2023-05-12, Close, 26380.93\n", + "2023-05-12, Close, 26343.27\n", + "2023-05-12, Close, 26348.01\n", + "2023-05-12, Close, 26412.22\n", + "2023-05-12, Close, 26450.00\n", + "2023-05-12, Close, 26313.85\n", + "2023-05-12, Close, 26320.84\n", + "2023-05-12, Close, 26290.98\n", + "2023-05-12, Close, 26304.49\n", + "2023-05-12, Close, 26299.30\n", + "2023-05-12, Close, 26459.62\n", + "2023-05-12, BUY CREATE, 26459.62\n", + "2023-05-12, BUY EXECUTED, Price: 26459.63, Cost: 132298.15, Comm 0.00\n", + "2023-05-12, Close, 26438.42\n", + "2023-05-12, Close, 26750.09\n", + "2023-05-12, Close, 26684.77\n", + "2023-05-12, Close, 26795.01\n", + "2023-05-13, Close, 26838.99\n", + "2023-05-13, Close, 26827.20\n", + "2023-05-13, Close, 26779.94\n", + "2023-05-13, Close, 26808.27\n", + "2023-05-13, Close, 26797.75\n", + "2023-05-13, Close, 26741.03\n", + "2023-05-13, Close, 26731.59\n", + "2023-05-13, Close, 26771.88\n", + "2023-05-13, Close, 26799.73\n", + "2023-05-13, Close, 26842.05\n", + "2023-05-13, Close, 26830.69\n", + "2023-05-13, Close, 26823.94\n", + "2023-05-13, Close, 26824.60\n", + "2023-05-13, Close, 26821.38\n", + "2023-05-13, Close, 26789.12\n", + "2023-05-13, SELL CREATE, 26789.12\n", + "2023-05-13, SELL EXECUTED, Price: 26789.12, Cost: 132298.15, Comm 0.00\n", + "2023-05-13, OPERATION PROFIT, GROSS 1647.45, NET 1647.45\n", + "2023-05-13, Close, 26816.25\n", + "2023-05-13, BUY CREATE, 26816.25\n", + "2023-05-13, BUY EXECUTED, Price: 26816.25, Cost: 134081.25, Comm 0.00\n", + "2023-05-13, Close, 26822.80\n", + "2023-05-13, Close, 26812.32\n", + "2023-05-13, Close, 26785.00\n", + "2023-05-13, SELL CREATE, 26785.00\n", + "2023-05-13, SELL EXECUTED, Price: 26785.00, Cost: 134081.25, Comm 0.00\n", + "2023-05-13, OPERATION PROFIT, GROSS -156.25, NET -156.25\n", + "2023-05-13, Close, 26837.94\n", + "2023-05-13, BUY CREATE, 26837.94\n", + "2023-05-13, BUY EXECUTED, Price: 26837.93, Cost: 134189.65, Comm 0.00\n", + "2023-05-13, Close, 26904.86\n", + "2023-05-13, Close, 26862.56\n", + "2023-05-13, Close, 26889.94\n", + "2023-05-13, Close, 26775.28\n", + "2023-05-13, SELL CREATE, 26775.28\n", + "2023-05-14, SELL EXECUTED, Price: 26775.27, Cost: 134189.65, Comm 0.00\n", + "2023-05-14, OPERATION PROFIT, GROSS -313.30, NET -313.30\n", + "2023-05-14, Close, 26741.31\n", + "2023-05-14, Close, 26730.00\n", + "2023-05-14, Close, 26810.64\n", + "2023-05-14, Close, 26865.03\n", + "2023-05-14, BUY CREATE, 26865.03\n", + "2023-05-14, BUY EXECUTED, Price: 26865.04, Cost: 134325.20, Comm 0.00\n", + "2023-05-14, Close, 26825.87\n", + "2023-05-14, Close, 26828.49\n", + "2023-05-14, Close, 26843.29\n", + "2023-05-14, Close, 26855.21\n", + "2023-05-14, Close, 26845.53\n", + "2023-05-14, Close, 26842.53\n", + "2023-05-14, Close, 26827.07\n", + "2023-05-14, SELL CREATE, 26827.07\n", + "2023-05-14, SELL EXECUTED, Price: 26827.07, Cost: 134325.20, Comm 0.00\n", + "2023-05-14, OPERATION PROFIT, GROSS -189.85, NET -189.85\n", + "2023-05-14, Close, 26805.98\n", + "2023-05-14, Close, 26871.33\n", + "2023-05-14, BUY CREATE, 26871.33\n", + "2023-05-14, BUY EXECUTED, Price: 26871.32, Cost: 134356.60, Comm 0.00\n", + "2023-05-14, Close, 26912.42\n", + "2023-05-14, Close, 26963.41\n", + "2023-05-14, Close, 27082.02\n", + "2023-05-14, Close, 26958.70\n", + "2023-05-14, Close, 26940.72\n", + "2023-05-14, Close, 26920.72\n", + "2023-05-14, Close, 26878.97\n", + "2023-05-14, SELL CREATE, 26878.97\n", + "2023-05-14, SELL EXECUTED, Price: 26878.96, Cost: 134356.60, Comm 0.00\n", + "2023-05-14, OPERATION PROFIT, GROSS 38.20, NET 38.20\n", + "2023-05-14, Close, 26942.55\n", + "2023-05-14, BUY CREATE, 26942.55\n", + "2023-05-14, BUY EXECUTED, Price: 26942.55, Cost: 134712.75, Comm 0.00\n", + "2023-05-14, Close, 26906.62\n", + "2023-05-14, Close, 26900.79\n", + "2023-05-14, SELL CREATE, 26900.79\n", + "2023-05-14, SELL EXECUTED, Price: 26900.79, Cost: 134712.75, Comm 0.00\n", + "2023-05-14, OPERATION PROFIT, GROSS -208.80, NET -208.80\n", + "2023-05-14, Close, 26917.62\n", + "2023-05-14, BUY CREATE, 26917.62\n", + "2023-05-15, BUY EXECUTED, Price: 26917.61, Cost: 134588.05, Comm 0.00\n", + "2023-05-15, Close, 26800.25\n", + "2023-05-15, SELL CREATE, 26800.25\n", + "2023-05-15, SELL EXECUTED, Price: 26800.25, Cost: 134588.05, Comm 0.00\n", + "2023-05-15, OPERATION PROFIT, GROSS -586.80, NET -586.80\n", + "2023-05-15, Close, 27208.38\n", + "2023-05-15, BUY CREATE, 27208.38\n", + "2023-05-15, BUY EXECUTED, Price: 27208.38, Cost: 136041.90, Comm 0.00\n", + "2023-05-15, Close, 27162.07\n", + "2023-05-15, Close, 27232.80\n", + "2023-05-15, Close, 27289.04\n", + "2023-05-15, Close, 27335.52\n", + "2023-05-15, Close, 27475.63\n", + "2023-05-15, Close, 27407.48\n", + "2023-05-15, Close, 27434.67\n", + "2023-05-15, Close, 27390.50\n", + "2023-05-15, Close, 27416.61\n", + "2023-05-15, Close, 27336.12\n", + "2023-05-15, Close, 27395.73\n", + "2023-05-15, Close, 27374.25\n", + "2023-05-15, Close, 27404.71\n", + "2023-05-15, Close, 27396.80\n", + "2023-05-15, Close, 27482.65\n", + "2023-05-15, Close, 27506.41\n", + "2023-05-15, Close, 27431.88\n", + "2023-05-15, Close, 27418.24\n", + "2023-05-15, Close, 27346.30\n", + "2023-05-15, SELL CREATE, 27346.30\n", + "2023-05-15, SELL EXECUTED, Price: 27346.31, Cost: 136041.90, Comm 0.00\n", + "2023-05-15, OPERATION PROFIT, GROSS 689.65, NET 689.65\n", + "2023-05-15, Close, 27362.45\n", + "2023-05-15, Close, 27310.17\n", + "2023-05-15, Close, 27162.14\n", + "2023-05-16, Close, 27205.57\n", + "2023-05-16, Close, 27024.64\n", + "2023-05-16, Close, 27080.49\n", + "2023-05-16, Close, 27130.00\n", + "2023-05-16, Close, 27114.73\n", + "2023-05-16, Close, 27061.55\n", + "2023-05-16, Close, 27065.57\n", + "2023-05-16, Close, 27252.58\n", + "2023-05-16, BUY CREATE, 27252.58\n", + "2023-05-16, BUY EXECUTED, Price: 27252.58, Cost: 136262.90, Comm 0.00\n", + "2023-05-16, Close, 27202.22\n", + "2023-05-16, SELL CREATE, 27202.22\n", + "2023-05-16, SELL EXECUTED, Price: 27202.21, Cost: 136262.90, Comm 0.00\n", + "2023-05-16, OPERATION PROFIT, GROSS -251.85, NET -251.85\n", + "2023-05-16, Close, 27092.56\n", + "2023-05-16, Close, 27013.92\n", + "2023-05-16, Close, 27059.03\n", + "2023-05-16, Close, 27060.00\n", + "2023-05-16, Close, 26984.84\n", + "2023-05-16, Close, 26982.79\n", + "2023-05-16, Close, 27038.02\n", + "2023-05-16, Close, 27052.83\n", + "2023-05-16, Close, 27086.56\n", + "2023-05-16, BUY CREATE, 27086.56\n", + "2023-05-16, BUY EXECUTED, Price: 27086.56, Cost: 135432.80, Comm 0.00\n", + "2023-05-16, Close, 27051.78\n", + "2023-05-16, SELL CREATE, 27051.78\n", + "2023-05-16, SELL EXECUTED, Price: 27051.79, Cost: 135432.80, Comm 0.00\n", + "2023-05-16, OPERATION PROFIT, GROSS -173.85, NET -173.85\n", + "2023-05-16, Close, 26933.05\n", + "2023-05-16, Close, 26951.41\n", + "2023-05-16, Close, 27012.97\n", + "2023-05-16, Close, 26998.36\n", + "2023-05-16, Close, 27033.84\n", + "2023-05-16, BUY CREATE, 27033.84\n", + "2023-05-17, BUY EXECUTED, Price: 27033.85, Cost: 135169.25, Comm 0.00\n", + "2023-05-17, Close, 27098.59\n", + "2023-05-17, Close, 27170.77\n", + "2023-05-17, Close, 27065.15\n", + "2023-05-17, Close, 27060.04\n", + "2023-05-17, Close, 27072.50\n", + "2023-05-17, Close, 26990.78\n", + "2023-05-17, SELL CREATE, 26990.78\n", + "2023-05-17, SELL EXECUTED, Price: 26990.78, Cost: 135169.25, Comm 0.00\n", + "2023-05-17, OPERATION PROFIT, GROSS -215.35, NET -215.35\n", + "2023-05-17, Close, 26993.92\n", + "2023-05-17, Close, 26845.14\n", + "2023-05-17, Close, 26813.07\n", + "2023-05-17, Close, 26871.80\n", + "2023-05-17, Close, 26868.21\n", + "2023-05-17, Close, 26637.62\n", + "2023-05-17, Close, 26669.89\n", + "2023-05-17, Close, 26635.91\n", + "2023-05-17, Close, 26780.77\n", + "2023-05-17, Close, 26796.93\n", + "2023-05-17, Close, 26905.10\n", + "2023-05-17, BUY CREATE, 26905.10\n", + "2023-05-17, BUY EXECUTED, Price: 26905.10, Cost: 134525.50, Comm 0.00\n", + "2023-05-17, Close, 27086.12\n", + "2023-05-17, Close, 27099.07\n", + "2023-05-17, Close, 27385.09\n", + "2023-05-17, Close, 27340.59\n", + "2023-05-17, Close, 27364.96\n", + "2023-05-17, Close, 27333.73\n", + "2023-05-17, Close, 27405.61\n", + "2023-05-18, Close, 27357.42\n", + "2023-05-18, Close, 27323.21\n", + "2023-05-18, Close, 27349.32\n", + "2023-05-18, Close, 27365.69\n", + "2023-05-18, Close, 27302.62\n", + "2023-05-18, Close, 27220.16\n", + "2023-05-18, SELL CREATE, 27220.16\n", + "2023-05-18, SELL EXECUTED, Price: 27220.16, Cost: 134525.50, Comm 0.00\n", + "2023-05-18, OPERATION PROFIT, GROSS 1575.30, NET 1575.30\n", + "2023-05-18, Close, 27210.88\n", + "2023-05-18, Close, 27391.61\n", + "2023-05-18, BUY CREATE, 27391.61\n", + "2023-05-18, BUY EXECUTED, Price: 27391.61, Cost: 136958.05, Comm 0.00\n", + "2023-05-18, Close, 27388.54\n", + "2023-05-18, Close, 27405.00\n", + "2023-05-18, Close, 27347.86\n", + "2023-05-18, Close, 27398.97\n", + "2023-05-18, Close, 27237.02\n", + "2023-05-18, SELL CREATE, 27237.02\n", + "2023-05-18, SELL EXECUTED, Price: 27237.02, Cost: 136958.05, Comm 0.00\n", + "2023-05-18, OPERATION PROFIT, GROSS -772.95, NET -772.95\n", + "2023-05-18, Close, 27257.21\n", + "2023-05-18, Close, 27244.99\n", + "2023-05-18, Close, 27086.77\n", + "2023-05-18, Close, 27069.56\n", + "2023-05-18, Close, 26488.99\n", + "2023-05-18, Close, 26617.62\n", + "2023-05-18, Close, 26734.01\n", + "2023-05-18, Close, 26720.63\n", + "2023-05-18, Close, 26917.24\n", + "2023-05-18, Close, 26891.75\n", + "2023-05-18, Close, 26821.28\n", + "2023-05-19, Close, 26885.47\n", + "2023-05-19, Close, 26809.99\n", + "2023-05-19, Close, 26802.05\n", + "2023-05-19, Close, 26834.73\n", + "2023-05-19, Close, 26875.00\n", + "2023-05-19, BUY CREATE, 26875.00\n", + "2023-05-19, BUY EXECUTED, Price: 26874.99, Cost: 134374.95, Comm 0.00\n", + "2023-05-19, Close, 26876.45\n", + "2023-05-19, Close, 26902.72\n", + "2023-05-19, Close, 26851.38\n", + "2023-05-19, Close, 26886.52\n", + "2023-05-19, Close, 26842.18\n", + "2023-05-19, SELL CREATE, 26842.18\n", + "2023-05-19, SELL EXECUTED, Price: 26842.18, Cost: 134374.95, Comm 0.00\n", + "2023-05-19, OPERATION PROFIT, GROSS -164.05, NET -164.05\n", + "2023-05-19, Close, 26823.08\n", + "2023-05-19, Close, 26855.89\n", + "2023-05-19, Close, 26909.94\n", + "2023-05-19, BUY CREATE, 26909.94\n", + "2023-05-19, BUY EXECUTED, Price: 26909.93, Cost: 134549.65, Comm 0.00\n", + "2023-05-19, Close, 26865.46\n", + "2023-05-19, Close, 26835.33\n", + "2023-05-19, SELL CREATE, 26835.33\n", + "2023-05-19, SELL EXECUTED, Price: 26835.34, Cost: 134549.65, Comm 0.00\n", + "2023-05-19, OPERATION PROFIT, GROSS -372.95, NET -372.95\n", + "2023-05-19, Close, 26883.65\n", + "2023-05-19, BUY CREATE, 26883.65\n", + "2023-05-19, BUY EXECUTED, Price: 26883.65, Cost: 134418.25, Comm 0.00\n", + "2023-05-19, Close, 26837.72\n", + "2023-05-19, SELL CREATE, 26837.72\n", + "2023-05-19, SELL EXECUTED, Price: 26837.73, Cost: 134418.25, Comm 0.00\n", + "2023-05-19, OPERATION PROFIT, GROSS -229.60, NET -229.60\n", + "2023-05-19, Close, 26919.17\n", + "2023-05-19, BUY CREATE, 26919.17\n", + "2023-05-19, BUY EXECUTED, Price: 26919.16, Cost: 134595.80, Comm 0.00\n", + "2023-05-19, Close, 26890.80\n", + "2023-05-19, Close, 26834.46\n", + "2023-05-19, SELL CREATE, 26834.46\n", + "2023-05-19, SELL EXECUTED, Price: 26834.47, Cost: 134595.80, Comm 0.00\n", + "2023-05-19, OPERATION PROFIT, GROSS -423.45, NET -423.45\n", + "2023-05-19, Close, 26831.04\n", + "2023-05-19, Close, 26906.12\n", + "2023-05-19, BUY CREATE, 26906.12\n", + "2023-05-19, BUY EXECUTED, Price: 26906.13, Cost: 134530.65, Comm 0.00\n", + "2023-05-19, Close, 26871.15\n", + "2023-05-19, Close, 26880.26\n", + "2023-05-20, Close, 26845.71\n", + "2023-05-20, SELL CREATE, 26845.71\n", + "2023-05-20, SELL EXECUTED, Price: 26845.71, Cost: 134530.65, Comm 0.00\n", + "2023-05-20, OPERATION PROFIT, GROSS -302.10, NET -302.10\n", + "2023-05-20, Close, 26858.98\n", + "2023-05-20, Close, 26839.63\n", + "2023-05-20, Close, 26865.58\n", + "2023-05-20, BUY CREATE, 26865.58\n", + "2023-05-20, BUY EXECUTED, Price: 26865.59, Cost: 134327.95, Comm 0.00\n", + "2023-05-20, Close, 26873.63\n", + "2023-05-20, Close, 26869.36\n", + "2023-05-20, Close, 26854.04\n", + "2023-05-20, SELL CREATE, 26854.04\n", + "2023-05-20, SELL EXECUTED, Price: 26854.05, Cost: 134327.95, Comm 0.00\n", + "2023-05-20, OPERATION PROFIT, GROSS -57.70, NET -57.70\n", + "2023-05-20, Close, 26854.98\n", + "2023-05-20, Close, 26908.98\n", + "2023-05-20, BUY CREATE, 26908.98\n", + "2023-05-20, BUY EXECUTED, Price: 26908.99, Cost: 134544.95, Comm 0.00\n", + "2023-05-20, Close, 26880.31\n", + "2023-05-20, Close, 26887.08\n", + "2023-05-20, Close, 26880.06\n", + "2023-05-20, Close, 26895.77\n", + "2023-05-20, Close, 26889.11\n", + "2023-05-20, Close, 26920.01\n", + "2023-05-20, Close, 26945.66\n", + "2023-05-20, Close, 26918.46\n", + "2023-05-20, Close, 27139.45\n", + "2023-05-20, Close, 27029.05\n", + "2023-05-20, Close, 27063.03\n", + "2023-05-20, Close, 27011.29\n", + "2023-05-20, Close, 27033.03\n", + "2023-05-20, Close, 27067.32\n", + "2023-05-20, Close, 27102.43\n", + "2023-05-21, Close, 27237.75\n", + "2023-05-21, Close, 27158.79\n", + "2023-05-21, Close, 27168.54\n", + "2023-05-21, Close, 27176.22\n", + "2023-05-21, Close, 27129.32\n", + "2023-05-21, Close, 27098.85\n", + "2023-05-21, Close, 27083.85\n", + "2023-05-21, SELL CREATE, 27083.85\n", + "2023-05-21, SELL EXECUTED, Price: 27083.85, Cost: 134544.95, Comm 0.00\n", + "2023-05-21, OPERATION PROFIT, GROSS 874.30, NET 874.30\n", + "2023-05-21, Close, 27054.99\n", + "2023-05-21, Close, 27042.87\n", + "2023-05-21, Close, 27077.21\n", + "2023-05-21, Close, 26955.00\n", + "2023-05-21, Close, 26829.94\n", + "2023-05-21, Close, 26930.01\n", + "2023-05-21, Close, 26890.69\n", + "2023-05-21, Close, 26898.32\n", + "2023-05-21, Close, 26898.97\n", + "2023-05-21, Close, 26886.43\n", + "2023-05-21, Close, 26871.55\n", + "2023-05-21, Close, 26872.28\n", + "2023-05-21, Close, 26902.12\n", + "2023-05-21, Close, 26845.80\n", + "2023-05-21, Close, 26745.15\n", + "2023-05-21, Close, 26754.81\n", + "2023-05-21, Close, 26747.78\n", + "2023-05-22, Close, 26656.11\n", + "2023-05-22, Close, 26584.17\n", + "2023-05-22, Close, 26649.67\n", + "2023-05-22, Close, 26644.80\n", + "2023-05-22, Close, 26691.67\n", + "2023-05-22, Close, 26756.09\n", + "2023-05-22, Close, 26821.69\n", + "2023-05-22, BUY CREATE, 26821.69\n", + "2023-05-22, BUY EXECUTED, Price: 26821.68, Cost: 134108.40, Comm 0.00\n", + "2023-05-22, Close, 26843.13\n", + "2023-05-22, Close, 26826.62\n", + "2023-05-22, Close, 26862.57\n", + "2023-05-22, Close, 26831.77\n", + "2023-05-22, Close, 26826.78\n", + "2023-05-22, Close, 26731.60\n", + "2023-05-22, SELL CREATE, 26731.60\n", + "2023-05-22, SELL EXECUTED, Price: 26731.61, Cost: 134108.40, Comm 0.00\n", + "2023-05-22, OPERATION PROFIT, GROSS -450.35, NET -450.35\n", + "2023-05-22, Close, 27007.00\n", + "2023-05-22, BUY CREATE, 27007.00\n", + "2023-05-22, BUY EXECUTED, Price: 27007.01, Cost: 135035.05, Comm 0.00\n", + "2023-05-22, Close, 26957.28\n", + "2023-05-22, Close, 26877.18\n", + "2023-05-22, Close, 26873.16\n", + "2023-05-22, Close, 26850.16\n", + "2023-05-22, Close, 26880.19\n", + "2023-05-22, Close, 26862.43\n", + "2023-05-22, Close, 26895.13\n", + "2023-05-22, Close, 26900.52\n", + "2023-05-22, Close, 26872.03\n", + "2023-05-22, Close, 26849.27\n", + "2023-05-22, SELL CREATE, 26849.27\n", + "2023-05-23, SELL EXECUTED, Price: 26849.28, Cost: 135035.05, Comm 0.00\n", + "2023-05-23, OPERATION PROFIT, GROSS -788.65, NET -788.65\n", + "2023-05-23, Close, 26822.33\n", + "2023-05-23, Close, 26994.98\n", + "2023-05-23, BUY CREATE, 26994.98\n", + "2023-05-23, BUY EXECUTED, Price: 26994.98, Cost: 134974.90, Comm 0.00\n", + "2023-05-23, Close, 27128.42\n", + "2023-05-23, Close, 27366.67\n", + "2023-05-23, Close, 27381.65\n", + "2023-05-23, Close, 27387.49\n", + "2023-05-23, Close, 27292.49\n", + "2023-05-23, Close, 27304.40\n", + "2023-05-23, Close, 27334.52\n", + "2023-05-23, Close, 27273.54\n", + "2023-05-23, Close, 27327.80\n", + "2023-05-23, Close, 27337.36\n", + "2023-05-23, Close, 27284.78\n", + "2023-05-23, Close, 27236.03\n", + "2023-05-23, Close, 27321.35\n", + "2023-05-23, Close, 27320.05\n", + "2023-05-23, Close, 27229.23\n", + "2023-05-23, SELL CREATE, 27229.23\n", + "2023-05-23, SELL EXECUTED, Price: 27229.24, Cost: 134974.90, Comm 0.00\n", + "2023-05-23, OPERATION PROFIT, GROSS 1171.30, NET 1171.30\n", + "2023-05-23, Close, 27203.71\n", + "2023-05-23, Close, 27139.01\n", + "2023-05-23, Close, 27181.22\n", + "2023-05-23, Close, 27215.11\n", + "2023-05-23, Close, 27200.38\n", + "2023-05-23, Close, 27194.91\n", + "2023-05-23, Close, 27219.61\n", + "2023-05-24, Close, 27156.70\n", + "2023-05-24, Close, 27138.19\n", + "2023-05-24, Close, 27161.76\n", + "2023-05-24, Close, 26786.00\n", + "2023-05-24, Close, 26804.12\n", + "2023-05-24, Close, 26775.45\n", + "2023-05-24, Close, 26712.55\n", + "2023-05-24, Close, 26678.67\n", + "2023-05-24, Close, 26748.58\n", + "2023-05-24, Close, 26750.80\n", + "2023-05-24, Close, 26730.00\n", + "2023-05-24, Close, 26742.24\n", + "2023-05-24, Close, 26695.41\n", + "2023-05-24, Close, 26442.86\n", + "2023-05-24, Close, 26254.93\n", + "2023-05-24, Close, 26314.69\n", + "2023-05-24, Close, 26238.01\n", + "2023-05-24, Close, 26285.01\n", + "2023-05-24, Close, 26220.55\n", + "2023-05-24, Close, 26252.33\n", + "2023-05-24, Close, 26404.18\n", + "2023-05-24, Close, 26368.66\n", + "2023-05-24, Close, 26348.52\n", + "2023-05-24, Close, 26329.01\n", + "2023-05-25, Close, 26236.47\n", + "2023-05-25, Close, 26124.08\n", + "2023-05-25, Close, 26122.71\n", + "2023-05-25, Close, 26183.72\n", + "2023-05-25, Close, 26224.39\n", + "2023-05-25, Close, 26260.12\n", + "2023-05-25, Close, 26261.27\n", + "2023-05-25, BUY CREATE, 26261.27\n", + "2023-05-25, BUY EXECUTED, Price: 26261.26, Cost: 131306.30, Comm 0.00\n", + "2023-05-25, Close, 26131.27\n", + "2023-05-25, SELL CREATE, 26131.27\n", + "2023-05-25, SELL EXECUTED, Price: 26131.27, Cost: 131306.30, Comm 0.00\n", + "2023-05-25, OPERATION PROFIT, GROSS -649.95, NET -649.95\n", + "2023-05-25, Close, 26223.87\n", + "2023-05-25, Close, 26284.76\n", + "2023-05-25, BUY CREATE, 26284.76\n", + "2023-05-25, BUY EXECUTED, Price: 26284.76, Cost: 131423.80, Comm 0.00\n", + "2023-05-25, Close, 26248.18\n", + "2023-05-25, SELL CREATE, 26248.18\n", + "2023-05-25, SELL EXECUTED, Price: 26248.17, Cost: 131423.80, Comm 0.00\n", + "2023-05-25, OPERATION PROFIT, GROSS -182.95, NET -182.95\n", + "2023-05-25, Close, 26296.62\n", + "2023-05-25, BUY CREATE, 26296.62\n", + "2023-05-25, BUY EXECUTED, Price: 26296.61, Cost: 131483.05, Comm 0.00\n", + "2023-05-25, Close, 26403.52\n", + "2023-05-25, Close, 26338.37\n", + "2023-05-25, Close, 26364.65\n", + "2023-05-25, Close, 26226.12\n", + "2023-05-25, SELL CREATE, 26226.12\n", + "2023-05-25, SELL EXECUTED, Price: 26226.12, Cost: 131483.05, Comm 0.00\n", + "2023-05-25, OPERATION PROFIT, GROSS -352.45, NET -352.45\n", + "2023-05-25, Close, 26276.73\n", + "2023-05-25, BUY CREATE, 26276.73\n", + "2023-05-25, BUY EXECUTED, Price: 26276.73, Cost: 131383.65, Comm 0.00\n", + "2023-05-25, Close, 26350.84\n", + "2023-05-25, Close, 26374.54\n", + "2023-05-25, Close, 26468.68\n", + "2023-05-25, Close, 26485.21\n", + "2023-05-25, Close, 26475.86\n", + "2023-05-25, Close, 26454.41\n", + "2023-05-25, Close, 26473.79\n", + "2023-05-26, Close, 26469.93\n", + "2023-05-26, Close, 26414.90\n", + "2023-05-26, Close, 26403.34\n", + "2023-05-26, Close, 26435.14\n", + "2023-05-26, Close, 26426.43\n", + "2023-05-26, Close, 26347.43\n", + "2023-05-26, SELL CREATE, 26347.43\n", + "2023-05-26, SELL EXECUTED, Price: 26347.44, Cost: 131383.65, Comm 0.00\n", + "2023-05-26, OPERATION PROFIT, GROSS 353.55, NET 353.55\n", + "2023-05-26, Close, 26434.40\n", + "2023-05-26, BUY CREATE, 26434.40\n", + "2023-05-26, BUY EXECUTED, Price: 26434.40, Cost: 132172.00, Comm 0.00\n", + "2023-05-26, Close, 26501.33\n", + "2023-05-26, Close, 26473.36\n", + "2023-05-26, Close, 26445.45\n", + "2023-05-26, SELL CREATE, 26445.45\n", + "2023-05-26, SELL EXECUTED, Price: 26445.46, Cost: 132172.00, Comm 0.00\n", + "2023-05-26, OPERATION PROFIT, GROSS 55.30, NET 55.30\n", + "2023-05-26, Close, 26450.13\n", + "2023-05-26, BUY CREATE, 26450.13\n", + "2023-05-26, BUY EXECUTED, Price: 26450.12, Cost: 132250.60, Comm 0.00\n", + "2023-05-26, Close, 26463.29\n", + "2023-05-26, Close, 26440.04\n", + "2023-05-26, SELL CREATE, 26440.04\n", + "2023-05-26, SELL EXECUTED, Price: 26440.04, Cost: 132250.60, Comm 0.00\n", + "2023-05-26, OPERATION PROFIT, GROSS -50.40, NET -50.40\n", + "2023-05-26, Close, 26539.97\n", + "2023-05-26, BUY CREATE, 26539.97\n", + "2023-05-26, BUY EXECUTED, Price: 26539.98, Cost: 132699.90, Comm 0.00\n", + "2023-05-26, Close, 26760.01\n", + "2023-05-26, Close, 26750.21\n", + "2023-05-26, Close, 26792.36\n", + "2023-05-26, Close, 26713.00\n", + "2023-05-26, Close, 26730.69\n", + "2023-05-26, Close, 26767.21\n", + "2023-05-26, Close, 26747.66\n", + "2023-05-26, Close, 26725.24\n", + "2023-05-26, Close, 26686.00\n", + "2023-05-26, Close, 26705.92\n", + "2023-05-27, Close, 26651.92\n", + "2023-05-27, SELL CREATE, 26651.92\n", + "2023-05-27, SELL EXECUTED, Price: 26651.93, Cost: 132699.90, Comm 0.00\n", + "2023-05-27, OPERATION PROFIT, GROSS 559.75, NET 559.75\n", + "2023-05-27, Close, 26713.76\n", + "2023-05-27, BUY CREATE, 26713.76\n", + "2023-05-27, BUY EXECUTED, Price: 26713.75, Cost: 133568.75, Comm 0.00\n", + "2023-05-27, Close, 26742.97\n", + "2023-05-27, Close, 26752.00\n", + "2023-05-27, Close, 26760.96\n", + "2023-05-27, Close, 26725.16\n", + "2023-05-27, SELL CREATE, 26725.16\n", + "2023-05-27, SELL EXECUTED, Price: 26725.16, Cost: 133568.75, Comm 0.00\n", + "2023-05-27, OPERATION PROFIT, GROSS 57.05, NET 57.05\n", + "2023-05-27, Close, 26749.47\n", + "2023-05-27, BUY CREATE, 26749.47\n", + "2023-05-27, BUY EXECUTED, Price: 26749.46, Cost: 133747.30, Comm 0.00\n", + "2023-05-27, Close, 26722.80\n", + "2023-05-27, SELL CREATE, 26722.80\n", + "2023-05-27, SELL EXECUTED, Price: 26722.80, Cost: 133747.30, Comm 0.00\n", + "2023-05-27, OPERATION PROFIT, GROSS -133.30, NET -133.30\n", + "2023-05-27, Close, 26688.65\n", + "2023-05-27, Close, 26699.17\n", + "2023-05-27, Close, 26676.89\n", + "2023-05-27, Close, 26699.02\n", + "2023-05-27, Close, 26711.50\n", + "2023-05-27, Close, 26628.29\n", + "2023-05-27, Close, 26666.87\n", + "2023-05-27, Close, 26690.05\n", + "2023-05-27, Close, 26664.07\n", + "2023-05-27, Close, 26756.70\n", + "2023-05-27, BUY CREATE, 26756.70\n", + "2023-05-27, BUY EXECUTED, Price: 26756.71, Cost: 133783.55, Comm 0.00\n", + "2023-05-27, Close, 26702.64\n", + "2023-05-27, SELL CREATE, 26702.64\n", + "2023-05-27, SELL EXECUTED, Price: 26702.64, Cost: 133783.55, Comm 0.00\n", + "2023-05-27, OPERATION PROFIT, GROSS -270.35, NET -270.35\n", + "2023-05-27, Close, 26729.60\n", + "2023-05-27, BUY CREATE, 26729.60\n", + "2023-05-27, BUY EXECUTED, Price: 26729.60, Cost: 133648.00, Comm 0.00\n", + "2023-05-27, Close, 26751.52\n", + "2023-05-27, Close, 26771.27\n", + "2023-05-27, Close, 26803.28\n", + "2023-05-27, Close, 26854.27\n", + "2023-05-28, Close, 27072.42\n", + "2023-05-28, Close, 27093.94\n", + "2023-05-28, Close, 27100.01\n", + "2023-05-28, Close, 27187.23\n", + "2023-05-28, Close, 27167.97\n", + "2023-05-28, Close, 27164.75\n", + "2023-05-28, Close, 27184.90\n", + "2023-05-28, Close, 27226.37\n", + "2023-05-28, Close, 27197.63\n", + "2023-05-28, Close, 27156.68\n", + "2023-05-28, Close, 27212.35\n", + "2023-05-28, Close, 27153.76\n", + "2023-05-28, Close, 27142.48\n", + "2023-05-28, Close, 27181.31\n", + "2023-05-28, Close, 27190.21\n", + "2023-05-28, Close, 27272.17\n", + "2023-05-28, Close, 27252.27\n", + "2023-05-28, Close, 27351.59\n", + "2023-05-28, Close, 27589.75\n", + "2023-05-28, Close, 27525.99\n", + "2023-05-28, Close, 27554.48\n", + "2023-05-28, Close, 27835.02\n", + "2023-05-28, Close, 28090.39\n", + "2023-05-28, Close, 28065.00\n", + "2023-05-29, Close, 28192.53\n", + "2023-05-29, Close, 28166.57\n", + "2023-05-29, Close, 28096.01\n", + "2023-05-29, Close, 27954.99\n", + "2023-05-29, Close, 27947.07\n", + "2023-05-29, Close, 27990.72\n", + "2023-05-29, Close, 28002.49\n", + "2023-05-29, Close, 27907.87\n", + "2023-05-29, Close, 27900.61\n", + "2023-05-29, SELL CREATE, 27900.61\n", + "2023-05-29, SELL EXECUTED, Price: 27900.60, Cost: 133648.00, Comm 0.00\n", + "2023-05-29, OPERATION PROFIT, GROSS 5855.00, NET 5855.00\n", + "2023-05-29, Close, 27939.95\n", + "2023-05-29, Close, 27857.59\n", + "2023-05-29, Close, 27913.87\n", + "2023-05-29, Close, 27876.98\n", + "2023-05-29, Close, 27903.12\n", + "2023-05-29, Close, 27787.77\n", + "2023-05-29, Close, 27630.51\n", + "2023-05-29, Close, 27597.24\n", + "2023-05-29, Close, 27689.14\n", + "2023-05-29, Close, 27635.45\n", + "2023-05-29, Close, 27637.94\n", + "2023-05-29, Close, 27682.77\n", + "2023-05-29, Close, 27666.70\n", + "2023-05-29, Close, 27689.22\n", + "2023-05-29, Close, 27736.40\n", + "2023-05-30, Close, 27709.55\n", + "2023-05-30, Close, 27766.03\n", + "2023-05-30, BUY CREATE, 27766.03\n", + "2023-05-30, BUY EXECUTED, Price: 27766.03, Cost: 138830.15, Comm 0.00\n", + "2023-05-30, Close, 27783.43\n", + "2023-05-30, Close, 27829.23\n", + "2023-05-30, Close, 27776.19\n", + "2023-05-30, Close, 27753.38\n", + "2023-05-30, Close, 27795.81\n", + "2023-05-30, Close, 27733.22\n", + "2023-05-30, Close, 27781.78\n", + "2023-05-30, Close, 27852.33\n", + "2023-05-30, Close, 27900.18\n", + "2023-05-30, Close, 28021.40\n", + "2023-05-30, Close, 27903.51\n", + "2023-05-30, Close, 27800.01\n", + "2023-05-30, SELL CREATE, 27800.01\n", + "2023-05-30, SELL EXECUTED, Price: 27800.02, Cost: 138830.15, Comm 0.00\n", + "2023-05-30, OPERATION PROFIT, GROSS 169.95, NET 169.95\n", + "2023-05-30, Close, 27622.65\n", + "2023-05-30, Close, 27673.08\n", + "2023-05-30, Close, 27713.43\n", + "2023-05-30, Close, 27696.12\n", + "2023-05-30, Close, 27765.84\n", + "2023-05-30, Close, 27850.20\n", + "2023-05-30, BUY CREATE, 27850.20\n", + "2023-05-30, BUY EXECUTED, Price: 27850.21, Cost: 139251.05, Comm 0.00\n", + "2023-05-30, Close, 27762.51\n", + "2023-05-30, SELL CREATE, 27762.51\n", + "2023-05-30, SELL EXECUTED, Price: 27762.52, Cost: 139251.05, Comm 0.00\n", + "2023-05-30, OPERATION PROFIT, GROSS -438.45, NET -438.45\n", + "2023-05-30, Close, 27719.37\n", + "2023-05-30, Close, 27738.52\n", + "2023-05-30, Close, 27694.40\n", + "2023-05-31, Close, 27754.78\n", + "2023-05-31, Close, 27742.09\n", + "2023-05-31, Close, 27673.47\n", + "2023-05-31, Close, 27657.30\n", + "2023-05-31, Close, 27257.70\n", + "2023-05-31, Close, 27088.15\n", + "2023-05-31, Close, 27163.37\n", + "2023-05-31, Close, 27167.90\n", + "2023-05-31, Close, 27136.93\n", + "2023-05-31, Close, 27133.28\n", + "2023-05-31, Close, 27056.53\n", + "2023-05-31, Close, 27097.18\n", + "2023-05-31, Close, 27072.34\n", + "2023-05-31, Close, 27117.11\n", + "2023-05-31, Close, 27033.86\n", + "2023-05-31, Close, 26911.54\n", + "2023-05-31, Close, 26936.01\n", + "2023-05-31, Close, 27055.40\n", + "2023-05-31, Close, 27037.06\n", + "2023-05-31, Close, 27010.57\n", + "2023-05-31, Close, 27114.20\n", + "2023-05-31, BUY CREATE, 27114.20\n", + "2023-05-31, BUY EXECUTED, Price: 27114.19, Cost: 135570.95, Comm 0.00\n", + "2023-05-31, Close, 27090.79\n", + "2023-05-31, Close, 27183.98\n", + "2023-05-31, Close, 27210.35\n", + "2023-06-01, Close, 27065.77\n", + "2023-06-01, SELL CREATE, 27065.77\n", + "2023-06-01, SELL EXECUTED, Price: 27065.76, Cost: 135570.95, Comm 0.00\n", + "2023-06-01, OPERATION PROFIT, GROSS -242.15, NET -242.15\n", + "2023-06-01, Close, 27078.56\n", + "2023-06-01, BUY CREATE, 27078.56\n", + "2023-06-01, BUY EXECUTED, Price: 27078.56, Cost: 135392.80, Comm 0.00\n", + "2023-06-01, Close, 26719.26\n", + "2023-06-01, SELL CREATE, 26719.26\n", + "2023-06-01, SELL EXECUTED, Price: 26719.26, Cost: 135392.80, Comm 0.00\n", + "2023-06-01, OPERATION PROFIT, GROSS -1796.50, NET -1796.50\n", + "2023-06-01, Close, 26779.94\n", + "2023-06-01, Close, 26804.15\n", + "2023-06-01, Close, 26849.20\n", + "2023-06-01, Close, 26785.13\n", + "2023-06-01, Close, 26802.67\n", + "2023-06-01, Close, 26912.53\n", + "2023-06-01, Close, 26908.63\n", + "2023-06-01, Close, 26860.00\n", + "2023-06-01, Close, 26892.96\n", + "2023-06-01, Close, 26941.79\n", + "2023-06-01, BUY CREATE, 26941.79\n", + "2023-06-01, BUY EXECUTED, Price: 26941.80, Cost: 134709.00, Comm 0.00\n", + "2023-06-01, Close, 26891.74\n", + "2023-06-01, SELL CREATE, 26891.74\n", + "2023-06-01, SELL EXECUTED, Price: 26891.74, Cost: 134709.00, Comm 0.00\n", + "2023-06-01, OPERATION PROFIT, GROSS -250.30, NET -250.30\n", + "2023-06-01, Close, 26898.08\n", + "2023-06-01, BUY CREATE, 26898.08\n", + "2023-06-01, BUY EXECUTED, Price: 26898.07, Cost: 134490.35, Comm 0.00\n", + "2023-06-01, Close, 26894.48\n", + "2023-06-01, Close, 27092.08\n", + "2023-06-01, Close, 26956.94\n", + "2023-06-01, Close, 26964.77\n", + "2023-06-01, Close, 26862.68\n", + "2023-06-01, SELL CREATE, 26862.68\n", + "2023-06-01, SELL EXECUTED, Price: 26862.68, Cost: 134490.35, Comm 0.00\n", + "2023-06-01, OPERATION PROFIT, GROSS -176.95, NET -176.95\n", + "2023-06-01, Close, 26863.00\n", + "2023-06-01, Close, 26889.84\n", + "2023-06-01, Close, 26880.97\n", + "2023-06-01, Close, 26817.93\n", + "2023-06-02, Close, 26786.03\n", + "2023-06-02, Close, 26811.90\n", + "2023-06-02, Close, 26960.01\n", + "2023-06-02, BUY CREATE, 26960.01\n", + "2023-06-02, BUY EXECUTED, Price: 26960.01, Cost: 134800.05, Comm 0.00\n", + "2023-06-02, Close, 27000.00\n", + "2023-06-02, Close, 27068.27\n", + "2023-06-02, Close, 27152.60\n", + "2023-06-02, Close, 27071.06\n", + "2023-06-02, Close, 27049.65\n", + "2023-06-02, Close, 27166.14\n", + "2023-06-02, Close, 27080.68\n", + "2023-06-02, Close, 27096.99\n", + "2023-06-02, Close, 27130.75\n", + "2023-06-02, Close, 27095.42\n", + "2023-06-02, Close, 26908.84\n", + "2023-06-02, SELL CREATE, 26908.84\n", + "2023-06-02, SELL EXECUTED, Price: 26908.85, Cost: 134800.05, Comm 0.00\n", + "2023-06-02, OPERATION PROFIT, GROSS -255.80, NET -255.80\n", + "2023-06-02, Close, 26964.74\n", + "2023-06-02, Close, 27095.92\n", + "2023-06-02, BUY CREATE, 27095.92\n", + "2023-06-02, BUY EXECUTED, Price: 27095.93, Cost: 135479.65, Comm 0.00\n", + "2023-06-02, Close, 27056.06\n", + "2023-06-02, SELL CREATE, 27056.06\n", + "2023-06-02, SELL EXECUTED, Price: 27056.06, Cost: 135479.65, Comm 0.00\n", + "2023-06-02, OPERATION PROFIT, GROSS -199.35, NET -199.35\n", + "2023-06-02, Close, 27057.58\n", + "2023-06-02, Close, 27192.60\n", + "2023-06-02, BUY CREATE, 27192.60\n", + "2023-06-02, BUY EXECUTED, Price: 27192.61, Cost: 135963.05, Comm 0.00\n", + "2023-06-02, Close, 27239.02\n", + "2023-06-02, Close, 27172.84\n", + "2023-06-02, Close, 27207.40\n", + "2023-06-02, Close, 27262.92\n", + "2023-06-02, Close, 27242.59\n", + "2023-06-03, Close, 27165.09\n", + "2023-06-03, Close, 27130.40\n", + "2023-06-03, Close, 27153.26\n", + "2023-06-03, Close, 27143.20\n", + "2023-06-03, Close, 27160.24\n", + "2023-06-03, Close, 27157.20\n", + "2023-06-03, SELL CREATE, 27157.20\n", + "2023-06-03, SELL EXECUTED, Price: 27157.20, Cost: 135963.05, Comm 0.00\n", + "2023-06-03, OPERATION PROFIT, GROSS -177.05, NET -177.05\n", + "2023-06-03, Close, 27182.35\n", + "2023-06-03, BUY CREATE, 27182.35\n", + "2023-06-03, BUY EXECUTED, Price: 27182.35, Cost: 135911.75, Comm 0.00\n", + "2023-06-03, Close, 27174.42\n", + "2023-06-03, SELL CREATE, 27174.42\n", + "2023-06-03, SELL EXECUTED, Price: 27174.42, Cost: 135911.75, Comm 0.00\n", + "2023-06-03, OPERATION PROFIT, GROSS -39.65, NET -39.65\n", + "2023-06-03, Close, 27146.62\n", + "2023-06-03, Close, 27151.51\n", + "2023-06-03, Close, 27140.00\n", + "2023-06-03, Close, 27129.79\n", + "2023-06-03, Close, 27165.81\n", + "2023-06-03, Close, 27166.98\n", + "2023-06-03, BUY CREATE, 27166.98\n", + "2023-06-03, BUY EXECUTED, Price: 27166.97, Cost: 135834.85, Comm 0.00\n", + "2023-06-03, Close, 27171.24\n", + "2023-06-03, Close, 27305.26\n", + "2023-06-03, Close, 27248.48\n", + "2023-06-03, Close, 27160.90\n", + "2023-06-03, SELL CREATE, 27160.90\n", + "2023-06-03, SELL EXECUTED, Price: 27160.91, Cost: 135834.85, Comm 0.00\n", + "2023-06-03, OPERATION PROFIT, GROSS -30.30, NET -30.30\n", + "2023-06-03, Close, 27147.43\n", + "2023-06-03, Close, 27096.36\n", + "2023-06-03, Close, 27062.33\n", + "2023-06-03, Close, 27004.41\n", + "2023-06-03, Close, 27071.55\n", + "2023-06-03, Close, 27069.22\n", + "2023-06-04, Close, 27005.13\n", + "2023-06-04, Close, 27041.03\n", + "2023-06-04, Close, 27091.27\n", + "2023-06-04, Close, 27061.38\n", + "2023-06-04, Close, 27054.95\n", + "2023-06-04, Close, 27038.63\n", + "2023-06-04, Close, 27127.78\n", + "2023-06-04, BUY CREATE, 27127.78\n", + "2023-06-04, BUY EXECUTED, Price: 27127.78, Cost: 135638.90, Comm 0.00\n", + "2023-06-04, Close, 27150.45\n", + "2023-06-04, Close, 27150.82\n", + "2023-06-04, Close, 27215.89\n", + "2023-06-04, Close, 27221.05\n", + "2023-06-04, Close, 27198.55\n", + "2023-06-04, Close, 27210.10\n", + "2023-06-04, Close, 27245.46\n", + "2023-06-04, Close, 27234.20\n", + "2023-06-04, Close, 27179.00\n", + "2023-06-04, Close, 27170.66\n", + "2023-06-04, Close, 27176.76\n", + "2023-06-04, Close, 27194.18\n", + "2023-06-04, Close, 27213.11\n", + "2023-06-04, Close, 27241.51\n", + "2023-06-04, Close, 27194.57\n", + "2023-06-04, SELL CREATE, 27194.57\n", + "2023-06-04, SELL EXECUTED, Price: 27194.57, Cost: 135638.90, Comm 0.00\n", + "2023-06-04, OPERATION PROFIT, GROSS 333.95, NET 333.95\n", + "2023-06-04, Close, 27234.06\n", + "2023-06-04, BUY CREATE, 27234.06\n", + "2023-06-04, BUY EXECUTED, Price: 27234.06, Cost: 136170.30, Comm 0.00\n", + "2023-06-04, Close, 27115.21\n", + "2023-06-04, SELL CREATE, 27115.21\n", + "2023-06-05, SELL EXECUTED, Price: 27115.20, Cost: 136170.30, Comm 0.00\n", + "2023-06-05, OPERATION PROFIT, GROSS -594.30, NET -594.30\n", + "2023-06-05, Close, 27024.76\n", + "2023-06-05, Close, 27047.14\n", + "2023-06-05, Close, 26922.71\n", + "2023-06-05, Close, 26843.58\n", + "2023-06-05, Close, 26837.00\n", + "2023-06-05, Close, 26816.70\n", + "2023-06-05, Close, 26765.34\n", + "2023-06-05, Close, 26829.99\n", + "2023-06-05, Close, 26798.64\n", + "2023-06-05, Close, 26776.99\n", + "2023-06-05, Close, 26716.80\n", + "2023-06-05, Close, 26773.39\n", + "2023-06-05, Close, 26690.76\n", + "2023-06-05, Close, 26728.64\n", + "2023-06-05, Close, 26802.21\n", + "2023-06-05, Close, 26007.53\n", + "2023-06-05, Close, 25809.05\n", + "2023-06-05, Close, 25756.28\n", + "2023-06-05, Close, 25564.43\n", + "2023-06-05, Close, 25629.99\n", + "2023-06-05, Close, 25631.16\n", + "2023-06-05, Close, 25658.35\n", + "2023-06-05, Close, 25710.73\n", + "2023-06-05, Close, 25728.20\n", + "2023-06-06, Close, 25690.89\n", + "2023-06-06, Close, 25640.01\n", + "2023-06-06, Close, 25764.76\n", + "2023-06-06, Close, 25730.83\n", + "2023-06-06, Close, 25797.65\n", + "2023-06-06, BUY CREATE, 25797.65\n", + "2023-06-06, BUY EXECUTED, Price: 25797.66, Cost: 128988.30, Comm 0.00\n", + "2023-06-06, Close, 25769.95\n", + "2023-06-06, Close, 25766.21\n", + "2023-06-06, Close, 25722.33\n", + "2023-06-06, Close, 25707.80\n", + "2023-06-06, Close, 25750.76\n", + "2023-06-06, Close, 25742.36\n", + "2023-06-06, Close, 25686.64\n", + "2023-06-06, SELL CREATE, 25686.64\n", + "2023-06-06, SELL EXECUTED, Price: 25686.64, Cost: 128988.30, Comm 0.00\n", + "2023-06-06, OPERATION PROFIT, GROSS -555.10, NET -555.10\n", + "2023-06-06, Close, 25533.41\n", + "2023-06-06, Close, 25735.20\n", + "2023-06-06, BUY CREATE, 25735.20\n", + "2023-06-06, BUY EXECUTED, Price: 25735.20, Cost: 128676.00, Comm 0.00\n", + "2023-06-06, Close, 26024.73\n", + "2023-06-06, Close, 26066.11\n", + "2023-06-06, Close, 26369.99\n", + "2023-06-06, Close, 26669.16\n", + "2023-06-06, Close, 26698.08\n", + "2023-06-06, Close, 27080.13\n", + "2023-06-06, Close, 26944.98\n", + "2023-06-06, Close, 27057.03\n", + "2023-06-06, Close, 27152.65\n", + "2023-06-06, Close, 27230.08\n", + "2023-06-07, Close, 27179.80\n", + "2023-06-07, Close, 27085.83\n", + "2023-06-07, Close, 26943.69\n", + "2023-06-07, Close, 26909.01\n", + "2023-06-07, Close, 26933.12\n", + "2023-06-07, Close, 26912.99\n", + "2023-06-07, Close, 26829.30\n", + "2023-06-07, SELL CREATE, 26829.30\n", + "2023-06-07, SELL EXECUTED, Price: 26829.30, Cost: 128676.00, Comm 0.00\n", + "2023-06-07, OPERATION PROFIT, GROSS 5470.50, NET 5470.50\n", + "2023-06-07, Close, 26795.87\n", + "2023-06-07, Close, 26816.47\n", + "2023-06-07, Close, 26486.28\n", + "2023-06-07, Close, 26595.74\n", + "2023-06-07, Close, 26896.14\n", + "2023-06-07, Close, 26802.35\n", + "2023-06-07, Close, 26818.62\n", + "2023-06-07, Close, 26443.57\n", + "2023-06-07, Close, 26349.52\n", + "2023-06-07, Close, 26329.16\n", + "2023-06-07, Close, 26507.04\n", + "2023-06-07, Close, 26472.94\n", + "2023-06-07, Close, 26482.42\n", + "2023-06-07, Close, 26359.93\n", + "2023-06-07, Close, 26156.00\n", + "2023-06-07, Close, 26275.90\n", + "2023-06-07, Close, 26339.34\n", + "2023-06-08, Close, 26390.01\n", + "2023-06-08, Close, 26443.60\n", + "2023-06-08, Close, 26386.51\n", + "2023-06-08, Close, 26344.17\n", + "2023-06-08, Close, 26400.97\n", + "2023-06-08, BUY CREATE, 26400.97\n", + "2023-06-08, BUY EXECUTED, Price: 26400.96, Cost: 132004.80, Comm 0.00\n", + "2023-06-08, Close, 26377.51\n", + "2023-06-08, Close, 26427.34\n", + "2023-06-08, Close, 26444.69\n", + "2023-06-08, Close, 26441.54\n", + "2023-06-08, Close, 26385.06\n", + "2023-06-08, Close, 26484.77\n", + "2023-06-08, Close, 26432.00\n", + "2023-06-08, Close, 26462.90\n", + "2023-06-08, Close, 26400.93\n", + "2023-06-08, SELL CREATE, 26400.93\n", + "2023-06-08, SELL EXECUTED, Price: 26400.92, Cost: 132004.80, Comm 0.00\n", + "2023-06-08, OPERATION PROFIT, GROSS -0.20, NET -0.20\n", + "2023-06-08, Close, 26648.55\n", + "2023-06-08, BUY CREATE, 26648.55\n", + "2023-06-08, BUY EXECUTED, Price: 26648.54, Cost: 133242.70, Comm 0.00\n", + "2023-06-08, Close, 26721.68\n", + "2023-06-08, Close, 26498.40\n", + "2023-06-08, Close, 26485.00\n", + "2023-06-08, Close, 26550.00\n", + "2023-06-08, Close, 26539.90\n", + "2023-06-08, Close, 26637.30\n", + "2023-06-08, Close, 26573.42\n", + "2023-06-08, Close, 26544.38\n", + "2023-06-08, Close, 26498.61\n", + "2023-06-08, SELL CREATE, 26498.61\n", + "2023-06-09, SELL EXECUTED, Price: 26498.62, Cost: 133242.70, Comm 0.00\n", + "2023-06-09, OPERATION PROFIT, GROSS -749.60, NET -749.60\n", + "2023-06-09, Close, 26456.95\n", + "2023-06-09, Close, 26504.21\n", + "2023-06-09, Close, 26457.51\n", + "2023-06-09, Close, 26483.70\n", + "2023-06-09, Close, 26491.38\n", + "2023-06-09, Close, 26504.54\n", + "2023-06-09, Close, 26492.93\n", + "2023-06-09, Close, 26493.43\n", + "2023-06-09, Close, 26642.37\n", + "2023-06-09, BUY CREATE, 26642.37\n", + "2023-06-09, BUY EXECUTED, Price: 26642.38, Cost: 133211.90, Comm 0.00\n", + "2023-06-09, Close, 26639.03\n", + "2023-06-09, Close, 26635.40\n", + "2023-06-09, Close, 26610.19\n", + "2023-06-09, Close, 26673.76\n", + "2023-06-09, Close, 26634.65\n", + "2023-06-09, Close, 26594.64\n", + "2023-06-09, Close, 26477.37\n", + "2023-06-09, SELL CREATE, 26477.37\n", + "2023-06-09, SELL EXECUTED, Price: 26477.36, Cost: 133211.90, Comm 0.00\n", + "2023-06-09, OPERATION PROFIT, GROSS -825.10, NET -825.10\n", + "2023-06-09, Close, 26482.84\n", + "2023-06-09, Close, 26496.06\n", + "2023-06-09, Close, 26450.00\n", + "2023-06-09, Close, 26407.15\n", + "2023-06-09, Close, 26451.16\n", + "2023-06-09, Close, 26479.52\n", + "2023-06-09, Close, 26492.69\n", + "2023-06-09, Close, 26477.81\n", + "2023-06-10, Close, 26459.99\n", + "2023-06-10, Close, 26396.93\n", + "2023-06-10, Close, 26326.92\n", + "2023-06-10, Close, 26323.07\n", + "2023-06-10, Close, 25765.28\n", + "2023-06-10, Close, 25518.06\n", + "2023-06-10, Close, 25538.81\n", + "2023-06-10, Close, 25651.09\n", + "2023-06-10, Close, 25669.07\n", + "2023-06-10, Close, 25651.88\n", + "2023-06-10, Close, 25698.31\n", + "2023-06-10, Close, 25731.40\n", + "2023-06-10, Close, 25616.18\n", + "2023-06-10, Close, 25657.49\n", + "2023-06-10, Close, 25668.34\n", + "2023-06-10, Close, 25628.80\n", + "2023-06-10, Close, 25588.67\n", + "2023-06-10, Close, 26022.34\n", + "2023-06-10, BUY CREATE, 26022.34\n", + "2023-06-10, BUY EXECUTED, Price: 26022.34, Cost: 130111.70, Comm 0.00\n", + "2023-06-10, Close, 25547.28\n", + "2023-06-10, SELL CREATE, 25547.28\n", + "2023-06-10, SELL EXECUTED, Price: 25547.28, Cost: 130111.70, Comm 0.00\n", + "2023-06-10, OPERATION PROFIT, GROSS -2375.30, NET -2375.30\n", + "2023-06-10, Close, 25750.00\n", + "2023-06-10, BUY CREATE, 25750.00\n", + "2023-06-10, BUY EXECUTED, Price: 25750.01, Cost: 128750.05, Comm 0.00\n", + "2023-06-10, Close, 25751.25\n", + "2023-06-10, Close, 25761.28\n", + "2023-06-10, Close, 25875.16\n", + "2023-06-10, Close, 25841.21\n", + "2023-06-11, Close, 25750.28\n", + "2023-06-11, Close, 25824.99\n", + "2023-06-11, Close, 25766.72\n", + "2023-06-11, Close, 25727.51\n", + "2023-06-11, SELL CREATE, 25727.51\n", + "2023-06-11, SELL EXECUTED, Price: 25727.51, Cost: 128750.05, Comm 0.00\n", + "2023-06-11, OPERATION PROFIT, GROSS -112.50, NET -112.50\n", + "2023-06-11, Close, 25727.74\n", + "2023-06-11, Close, 25819.10\n", + "2023-06-11, BUY CREATE, 25819.10\n", + "2023-06-11, BUY EXECUTED, Price: 25819.10, Cost: 129095.50, Comm 0.00\n", + "2023-06-11, Close, 25786.49\n", + "2023-06-11, Close, 25741.33\n", + "2023-06-11, SELL CREATE, 25741.33\n", + "2023-06-11, SELL EXECUTED, Price: 25741.32, Cost: 129095.50, Comm 0.00\n", + "2023-06-11, OPERATION PROFIT, GROSS -388.90, NET -388.90\n", + "2023-06-11, Close, 25740.20\n", + "2023-06-11, Close, 25706.26\n", + "2023-06-11, Close, 25774.08\n", + "2023-06-11, BUY CREATE, 25774.08\n", + "2023-06-11, BUY EXECUTED, Price: 25774.08, Cost: 128870.40, Comm 0.00\n", + "2023-06-11, Close, 25796.06\n", + "2023-06-11, Close, 25750.00\n", + "2023-06-11, SELL CREATE, 25750.00\n", + "2023-06-11, SELL EXECUTED, Price: 25750.01, Cost: 128870.40, Comm 0.00\n", + "2023-06-11, OPERATION PROFIT, GROSS -120.35, NET -120.35\n", + "2023-06-11, Close, 25703.33\n", + "2023-06-11, Close, 25753.19\n", + "2023-06-11, Close, 25751.36\n", + "2023-06-11, Close, 25868.39\n", + "2023-06-11, BUY CREATE, 25868.39\n", + "2023-06-11, BUY EXECUTED, Price: 25868.39, Cost: 129341.95, Comm 0.00\n", + "2023-06-11, Close, 25941.63\n", + "2023-06-11, Close, 25975.00\n", + "2023-06-11, Close, 26030.89\n", + "2023-06-11, Close, 26123.68\n", + "2023-06-11, Close, 26046.37\n", + "2023-06-11, Close, 25895.80\n", + "2023-06-11, Close, 25925.55\n", + "2023-06-12, Close, 25965.13\n", + "2023-06-12, Close, 25935.17\n", + "2023-06-12, Close, 25773.47\n", + "2023-06-12, SELL CREATE, 25773.47\n", + "2023-06-12, SELL EXECUTED, Price: 25773.48, Cost: 129341.95, Comm 0.00\n", + "2023-06-12, OPERATION PROFIT, GROSS -474.55, NET -474.55\n", + "2023-06-12, Close, 25791.29\n", + "2023-06-12, Close, 25814.98\n", + "2023-06-12, Close, 25772.80\n", + "2023-06-12, Close, 25844.34\n", + "2023-06-12, Close, 25802.98\n", + "2023-06-12, Close, 25939.32\n", + "2023-06-12, BUY CREATE, 25939.32\n", + "2023-06-12, BUY EXECUTED, Price: 25939.31, Cost: 129696.55, Comm 0.00\n", + "2023-06-12, Close, 25965.10\n", + "2023-06-12, Close, 25964.59\n", + "2023-06-12, Close, 25988.83\n", + "2023-06-12, Close, 25933.10\n", + "2023-06-12, Close, 25798.30\n", + "2023-06-12, SELL CREATE, 25798.30\n", + "2023-06-12, SELL EXECUTED, Price: 25798.29, Cost: 129696.55, Comm 0.00\n", + "2023-06-12, OPERATION PROFIT, GROSS -705.10, NET -705.10\n", + "2023-06-12, Close, 25846.35\n", + "2023-06-12, Close, 25824.63\n", + "2023-06-12, Close, 25825.41\n", + "2023-06-12, Close, 25804.56\n", + "2023-06-12, Close, 25845.31\n", + "2023-06-12, Close, 25824.23\n", + "2023-06-12, Close, 25893.48\n", + "2023-06-12, BUY CREATE, 25893.48\n", + "2023-06-12, BUY EXECUTED, Price: 25893.48, Cost: 129467.40, Comm 0.00\n", + "2023-06-12, Close, 25930.52\n", + "2023-06-12, Close, 25929.93\n", + "2023-06-12, Close, 25905.19\n", + "2023-06-13, Close, 25868.89\n", + "2023-06-13, SELL CREATE, 25868.89\n", + "2023-06-13, SELL EXECUTED, Price: 25868.88, Cost: 129467.40, Comm 0.00\n", + "2023-06-13, OPERATION PROFIT, GROSS -123.00, NET -123.00\n", + "2023-06-13, Close, 25970.67\n", + "2023-06-13, BUY CREATE, 25970.67\n", + "2023-06-13, BUY EXECUTED, Price: 25970.67, Cost: 129853.35, Comm 0.00\n", + "2023-06-13, Close, 26125.49\n", + "2023-06-13, Close, 26063.85\n", + "2023-06-13, Close, 26055.51\n", + "2023-06-13, Close, 26080.82\n", + "2023-06-13, Close, 26080.01\n", + "2023-06-13, Close, 26073.92\n", + "2023-06-13, Close, 26176.83\n", + "2023-06-13, Close, 26147.37\n", + "2023-06-13, Close, 26156.31\n", + "2023-06-13, Close, 26191.81\n", + "2023-06-13, Close, 26082.29\n", + "2023-06-13, Close, 26032.92\n", + "2023-06-13, SELL CREATE, 26032.92\n", + "2023-06-13, SELL EXECUTED, Price: 26032.91, Cost: 129853.35, Comm 0.00\n", + "2023-06-13, OPERATION PROFIT, GROSS 311.20, NET 311.20\n", + "2023-06-13, Close, 25985.67\n", + "2023-06-13, Close, 25759.54\n", + "2023-06-13, Close, 25865.29\n", + "2023-06-13, Close, 25821.88\n", + "2023-06-13, Close, 25889.63\n", + "2023-06-13, Close, 25902.84\n", + "2023-06-13, Close, 25847.98\n", + "2023-06-13, Close, 25847.45\n", + "2023-06-13, Close, 25840.00\n", + "2023-06-13, Close, 25934.25\n", + "2023-06-14, Close, 25989.72\n", + "2023-06-14, BUY CREATE, 25989.72\n", + "2023-06-14, BUY EXECUTED, Price: 25989.72, Cost: 129948.60, Comm 0.00\n", + "2023-06-14, Close, 26046.27\n", + "2023-06-14, Close, 26027.40\n", + "2023-06-14, Close, 25985.07\n", + "2023-06-14, Close, 25981.01\n", + "2023-06-14, Close, 25845.14\n", + "2023-06-14, SELL CREATE, 25845.14\n", + "2023-06-14, SELL EXECUTED, Price: 25845.14, Cost: 129948.60, Comm 0.00\n", + "2023-06-14, OPERATION PROFIT, GROSS -722.90, NET -722.90\n", + "2023-06-14, Close, 25894.54\n", + "2023-06-14, Close, 25897.72\n", + "2023-06-14, Close, 25928.30\n", + "2023-06-14, BUY CREATE, 25928.30\n", + "2023-06-14, BUY EXECUTED, Price: 25928.30, Cost: 129641.50, Comm 0.00\n", + "2023-06-14, Close, 25980.53\n", + "2023-06-14, Close, 25956.99\n", + "2023-06-14, Close, 25975.71\n", + "2023-06-14, Close, 26022.15\n", + "2023-06-14, Close, 25990.00\n", + "2023-06-14, Close, 26001.27\n", + "2023-06-14, Close, 25986.75\n", + "2023-06-14, Close, 25965.86\n", + "2023-06-14, Close, 26027.04\n", + "2023-06-14, Close, 25915.03\n", + "2023-06-14, SELL CREATE, 25915.03\n", + "2023-06-14, SELL EXECUTED, Price: 25915.02, Cost: 129641.50, Comm 0.00\n", + "2023-06-14, OPERATION PROFIT, GROSS -66.40, NET -66.40\n", + "2023-06-14, Close, 25874.59\n", + "2023-06-14, Close, 24934.21\n", + "2023-06-14, Close, 25121.25\n", + "2023-06-14, Close, 25034.98\n", + "2023-06-14, Close, 25128.60\n", + "2023-06-15, Close, 25206.51\n", + "2023-06-15, Close, 25064.79\n", + "2023-06-15, Close, 25083.79\n", + "2023-06-15, Close, 25065.35\n", + "2023-06-15, Close, 25028.15\n", + "2023-06-15, Close, 25031.42\n", + "2023-06-15, Close, 24927.95\n", + "2023-06-15, Close, 24983.80\n", + "2023-06-15, Close, 24974.26\n", + "2023-06-15, Close, 24947.71\n", + "2023-06-15, Close, 24923.51\n", + "2023-06-15, Close, 25014.97\n", + "2023-06-15, Close, 24954.45\n", + "2023-06-15, Close, 25055.22\n", + "2023-06-15, BUY CREATE, 25055.22\n", + "2023-06-15, BUY EXECUTED, Price: 25055.22, Cost: 125276.10, Comm 0.00\n", + "2023-06-15, Close, 25014.62\n", + "2023-06-15, SELL CREATE, 25014.62\n", + "2023-06-15, SELL EXECUTED, Price: 25014.62, Cost: 125276.10, Comm 0.00\n", + "2023-06-15, OPERATION PROFIT, GROSS -203.00, NET -203.00\n", + "2023-06-15, Close, 24959.95\n", + "2023-06-15, Close, 24999.99\n", + "2023-06-15, BUY CREATE, 24999.99\n", + "2023-06-15, BUY EXECUTED, Price: 25000.00, Cost: 125000.00, Comm 0.00\n", + "2023-06-15, Close, 25144.72\n", + "2023-06-15, Close, 25389.97\n", + "2023-06-15, Close, 25455.49\n", + "2023-06-15, Close, 25566.00\n", + "2023-06-15, Close, 25574.60\n", + "2023-06-15, Close, 25629.30\n", + "2023-06-15, Close, 25598.49\n", + "2023-06-16, Close, 25496.59\n", + "2023-06-16, Close, 25517.48\n", + "2023-06-16, Close, 25554.88\n", + "2023-06-16, Close, 25561.74\n", + "2023-06-16, Close, 25528.77\n", + "2023-06-16, Close, 25553.04\n", + "2023-06-16, Close, 25578.58\n", + "2023-06-16, Close, 25537.01\n", + "2023-06-16, Close, 25545.25\n", + "2023-06-16, Close, 25595.95\n", + "2023-06-16, Close, 25570.00\n", + "2023-06-16, Close, 25474.51\n", + "2023-06-16, SELL CREATE, 25474.51\n", + "2023-06-16, SELL EXECUTED, Price: 25474.51, Cost: 125000.00, Comm 0.00\n", + "2023-06-16, OPERATION PROFIT, GROSS 2372.55, NET 2372.55\n", + "2023-06-16, Close, 25569.99\n", + "2023-06-16, BUY CREATE, 25569.99\n", + "2023-06-16, BUY EXECUTED, Price: 25570.00, Cost: 127850.00, Comm 0.00\n", + "2023-06-16, Close, 25492.64\n", + "2023-06-16, SELL CREATE, 25492.64\n", + "2023-06-16, SELL EXECUTED, Price: 25492.64, Cost: 127850.00, Comm 0.00\n", + "2023-06-16, OPERATION PROFIT, GROSS -386.80, NET -386.80\n", + "2023-06-16, Close, 25616.01\n", + "2023-06-16, BUY CREATE, 25616.01\n", + "2023-06-16, BUY EXECUTED, Price: 25616.00, Cost: 128080.00, Comm 0.00\n", + "2023-06-16, Close, 25840.01\n", + "2023-06-16, Close, 25959.77\n", + "2023-06-16, Close, 26320.99\n", + "2023-06-16, Close, 26361.40\n", + "2023-06-16, Close, 26382.43\n", + "2023-06-16, Close, 26412.13\n", + "2023-06-16, Close, 26297.84\n", + "2023-06-16, Close, 26370.51\n", + "2023-06-16, Close, 26345.00\n", + "2023-06-17, Close, 26313.11\n", + "2023-06-17, Close, 26198.47\n", + "2023-06-17, Close, 26276.67\n", + "2023-06-17, Close, 26262.16\n", + "2023-06-17, Close, 26358.49\n", + "2023-06-17, Close, 26690.45\n", + "2023-06-17, Close, 26665.12\n", + "2023-06-17, Close, 26593.57\n", + "2023-06-17, Close, 26601.01\n", + "2023-06-17, Close, 26596.09\n", + "2023-06-17, Close, 26588.77\n", + "2023-06-17, Close, 26507.76\n", + "2023-06-17, Close, 26521.05\n", + "2023-06-17, Close, 26551.15\n", + "2023-06-17, Close, 26496.62\n", + "2023-06-17, Close, 26410.82\n", + "2023-06-17, SELL CREATE, 26410.82\n", + "2023-06-17, SELL EXECUTED, Price: 26410.82, Cost: 128080.00, Comm 0.00\n", + "2023-06-17, OPERATION PROFIT, GROSS 3974.10, NET 3974.10\n", + "2023-06-17, Close, 26473.14\n", + "2023-06-17, Close, 26423.42\n", + "2023-06-17, Close, 26521.43\n", + "2023-06-17, Close, 26475.30\n", + "2023-06-17, Close, 26541.86\n", + "2023-06-17, BUY CREATE, 26541.86\n", + "2023-06-17, BUY EXECUTED, Price: 26541.85, Cost: 132709.25, Comm 0.00\n", + "2023-06-17, Close, 26525.40\n", + "2023-06-17, Close, 26570.15\n", + "2023-06-17, Close, 26516.99\n", + "2023-06-18, Close, 26453.96\n", + "2023-06-18, SELL CREATE, 26453.96\n", + "2023-06-18, SELL EXECUTED, Price: 26453.95, Cost: 132709.25, Comm 0.00\n", + "2023-06-18, OPERATION PROFIT, GROSS -439.50, NET -439.50\n", + "2023-06-18, Close, 26492.12\n", + "2023-06-18, Close, 26475.52\n", + "2023-06-18, Close, 26548.45\n", + "2023-06-18, BUY CREATE, 26548.45\n", + "2023-06-18, BUY EXECUTED, Price: 26548.46, Cost: 132742.30, Comm 0.00\n", + "2023-06-18, Close, 26535.51\n", + "2023-06-18, Close, 26540.01\n", + "2023-06-18, Close, 26544.02\n", + "2023-06-18, Close, 26584.98\n", + "2023-06-18, Close, 26499.32\n", + "2023-06-18, SELL CREATE, 26499.32\n", + "2023-06-18, SELL EXECUTED, Price: 26499.32, Cost: 132742.30, Comm 0.00\n", + "2023-06-18, OPERATION PROFIT, GROSS -245.70, NET -245.70\n", + "2023-06-18, Close, 26527.34\n", + "2023-06-18, BUY CREATE, 26527.34\n", + "2023-06-18, BUY EXECUTED, Price: 26527.34, Cost: 132636.70, Comm 0.00\n", + "2023-06-18, Close, 26508.00\n", + "2023-06-18, SELL CREATE, 26508.00\n", + "2023-06-18, SELL EXECUTED, Price: 26507.99, Cost: 132636.70, Comm 0.00\n", + "2023-06-18, OPERATION PROFIT, GROSS -96.75, NET -96.75\n", + "2023-06-18, Close, 26500.00\n", + "2023-06-18, Close, 26534.97\n", + "2023-06-18, BUY CREATE, 26534.97\n", + "2023-06-18, BUY EXECUTED, Price: 26534.97, Cost: 132674.85, Comm 0.00\n", + "2023-06-18, Close, 26486.00\n", + "2023-06-18, SELL CREATE, 26486.00\n", + "2023-06-18, SELL EXECUTED, Price: 26486.01, Cost: 132674.85, Comm 0.00\n", + "2023-06-18, OPERATION PROFIT, GROSS -244.80, NET -244.80\n", + "2023-06-18, Close, 26549.99\n", + "2023-06-18, BUY CREATE, 26549.99\n", + "2023-06-18, BUY EXECUTED, Price: 26550.00, Cost: 132750.00, Comm 0.00\n", + "2023-06-18, Close, 26562.09\n", + "2023-06-18, Close, 26620.12\n", + "2023-06-18, Close, 26630.00\n", + "2023-06-18, Close, 26620.87\n", + "2023-06-18, Close, 26650.00\n", + "2023-06-18, Close, 26473.74\n", + "2023-06-18, SELL CREATE, 26473.74\n", + "2023-06-18, SELL EXECUTED, Price: 26473.74, Cost: 132750.00, Comm 0.00\n", + "2023-06-18, OPERATION PROFIT, GROSS -381.30, NET -381.30\n", + "2023-06-18, Close, 26415.34\n", + "2023-06-18, Close, 26402.26\n", + "2023-06-18, Close, 26339.97\n", + "2023-06-19, Close, 26366.10\n", + "2023-06-19, Close, 26437.43\n", + "2023-06-19, Close, 26446.33\n", + "2023-06-19, Close, 26403.36\n", + "2023-06-19, Close, 26428.55\n", + "2023-06-19, Close, 26465.59\n", + "2023-06-19, Close, 26427.98\n", + "2023-06-19, Close, 26428.01\n", + "2023-06-19, Close, 26417.25\n", + "2023-06-19, Close, 26401.03\n", + "2023-06-19, Close, 26377.99\n", + "2023-06-19, Close, 26447.73\n", + "2023-06-19, BUY CREATE, 26447.73\n", + "2023-06-19, BUY EXECUTED, Price: 26447.73, Cost: 132238.65, Comm 0.00\n", + "2023-06-19, Close, 26531.39\n", + "2023-06-19, Close, 26535.17\n", + "2023-06-19, Close, 26423.23\n", + "2023-06-19, SELL CREATE, 26423.23\n", + "2023-06-19, SELL EXECUTED, Price: 26423.24, Cost: 132238.65, Comm 0.00\n", + "2023-06-19, OPERATION PROFIT, GROSS -122.45, NET -122.45\n", + "2023-06-19, Close, 26444.00\n", + "2023-06-19, BUY CREATE, 26444.00\n", + "2023-06-19, BUY EXECUTED, Price: 26443.99, Cost: 132219.95, Comm 0.00\n", + "2023-06-19, Close, 26499.65\n", + "2023-06-19, Close, 26665.06\n", + "2023-06-19, Close, 26496.00\n", + "2023-06-19, Close, 26682.28\n", + "2023-06-19, Close, 26723.99\n", + "2023-06-19, Close, 26770.18\n", + "2023-06-19, Close, 26754.99\n", + "2023-06-19, Close, 26844.35\n", + "2023-06-20, Close, 26982.28\n", + "2023-06-20, Close, 26902.31\n", + "2023-06-20, Close, 26914.50\n", + "2023-06-20, Close, 26896.52\n", + "2023-06-20, Close, 26965.94\n", + "2023-06-20, Close, 26820.46\n", + "2023-06-20, Close, 26789.15\n", + "2023-06-20, Close, 26832.44\n", + "2023-06-20, Close, 26754.25\n", + "2023-06-20, SELL CREATE, 26754.25\n", + "2023-06-20, SELL EXECUTED, Price: 26754.24, Cost: 132219.95, Comm 0.00\n", + "2023-06-20, OPERATION PROFIT, GROSS 1551.25, NET 1551.25\n", + "2023-06-20, Close, 26780.56\n", + "2023-06-20, Close, 26775.98\n", + "2023-06-20, Close, 26907.99\n", + "2023-06-20, BUY CREATE, 26907.99\n", + "2023-06-20, BUY EXECUTED, Price: 26907.99, Cost: 134539.95, Comm 0.00\n", + "2023-06-20, Close, 26851.99\n", + "2023-06-20, Close, 26812.01\n", + "2023-06-20, SELL CREATE, 26812.01\n", + "2023-06-20, SELL EXECUTED, Price: 26812.00, Cost: 134539.95, Comm 0.00\n", + "2023-06-20, OPERATION PROFIT, GROSS -479.95, NET -479.95\n", + "2023-06-20, Close, 26780.00\n", + "2023-06-20, Close, 27071.93\n", + "2023-06-20, BUY CREATE, 27071.93\n", + "2023-06-20, BUY EXECUTED, Price: 27071.94, Cost: 135359.70, Comm 0.00\n", + "2023-06-20, Close, 27380.54\n", + "2023-06-20, Close, 27796.00\n", + "2023-06-20, Close, 28070.54\n", + "2023-06-20, Close, 27982.77\n", + "2023-06-20, Close, 28157.99\n", + "2023-06-20, Close, 28130.00\n", + "2023-06-20, Close, 28213.47\n", + "2023-06-20, Close, 28307.99\n", + "2023-06-21, Close, 28414.00\n", + "2023-06-21, Close, 28785.93\n", + "2023-06-21, Close, 28789.05\n", + "2023-06-21, Close, 28711.15\n", + "2023-06-21, Close, 28785.53\n", + "2023-06-21, Close, 28982.02\n", + "2023-06-21, Close, 28858.01\n", + "2023-06-21, Close, 28872.28\n", + "2023-06-21, Close, 28824.41\n", + "2023-06-21, Close, 28923.69\n", + "2023-06-21, Close, 28834.91\n", + "2023-06-21, Close, 28930.00\n", + "2023-06-21, Close, 28893.73\n", + "2023-06-21, Close, 29311.99\n", + "2023-06-21, Close, 29536.01\n", + "2023-06-21, Close, 29851.58\n", + "2023-06-21, Close, 30164.58\n", + "2023-06-21, Close, 30080.23\n", + "2023-06-21, Close, 30131.39\n", + "2023-06-21, Close, 30112.03\n", + "2023-06-21, Close, 29988.01\n", + "2023-06-21, Close, 29880.95\n", + "2023-06-21, Close, 30114.56\n", + "2023-06-21, Close, 29993.89\n", + "2023-06-22, Close, 30139.48\n", + "2023-06-22, Close, 30159.06\n", + "2023-06-22, Close, 30472.11\n", + "2023-06-22, Close, 30296.01\n", + "2023-06-22, Close, 30350.00\n", + "2023-06-22, Close, 30285.30\n", + "2023-06-22, Close, 30130.02\n", + "2023-06-22, SELL CREATE, 30130.02\n", + "2023-06-22, SELL EXECUTED, Price: 30130.02, Cost: 135359.70, Comm 0.00\n", + "2023-06-22, OPERATION PROFIT, GROSS 15290.40, NET 15290.40\n", + "2023-06-22, Close, 30100.75\n", + "2023-06-22, Close, 30096.70\n", + "2023-06-22, Close, 30134.36\n", + "2023-06-22, Close, 30178.00\n", + "2023-06-22, BUY CREATE, 30178.00\n", + "2023-06-22, BUY EXECUTED, Price: 30178.00, Cost: 150890.00, Comm 0.00\n", + "2023-06-22, Close, 29928.00\n", + "2023-06-22, SELL CREATE, 29928.00\n", + "2023-06-22, SELL EXECUTED, Price: 29928.01, Cost: 150890.00, Comm 0.00\n", + "2023-06-22, OPERATION PROFIT, GROSS -1249.95, NET -1249.95\n", + "2023-06-22, Close, 30115.49\n", + "2023-06-22, Close, 30235.99\n", + "2023-06-22, BUY CREATE, 30235.99\n", + "2023-06-22, BUY EXECUTED, Price: 30235.99, Cost: 151179.95, Comm 0.00\n", + "2023-06-22, Close, 29746.76\n", + "2023-06-22, SELL CREATE, 29746.76\n", + "2023-06-22, SELL EXECUTED, Price: 29746.75, Cost: 151179.95, Comm 0.00\n", + "2023-06-22, OPERATION PROFIT, GROSS -2446.20, NET -2446.20\n", + "2023-06-22, Close, 29850.65\n", + "2023-06-22, Close, 29970.02\n", + "2023-06-22, Close, 30145.29\n", + "2023-06-22, BUY CREATE, 30145.29\n", + "2023-06-22, BUY EXECUTED, Price: 30145.30, Cost: 150726.50, Comm 0.00\n", + "2023-06-22, Close, 30133.99\n", + "2023-06-22, Close, 30213.11\n", + "2023-06-22, Close, 30152.07\n", + "2023-06-22, Close, 30054.07\n", + "2023-06-22, SELL CREATE, 30054.07\n", + "2023-06-22, SELL EXECUTED, Price: 30054.06, Cost: 150726.50, Comm 0.00\n", + "2023-06-22, OPERATION PROFIT, GROSS -456.20, NET -456.20\n", + "2023-06-22, Close, 29927.77\n", + "2023-06-22, Close, 29884.92\n", + "2023-06-23, Close, 30010.00\n", + "2023-06-23, Close, 29933.53\n", + "2023-06-23, Close, 29984.91\n", + "2023-06-23, Close, 30007.96\n", + "2023-06-23, Close, 30002.00\n", + "2023-06-23, BUY CREATE, 30002.00\n", + "2023-06-23, BUY EXECUTED, Price: 30002.00, Cost: 150010.00, Comm 0.00\n", + "2023-06-23, Close, 30042.00\n", + "2023-06-23, Close, 30012.18\n", + "2023-06-23, SELL CREATE, 30012.18\n", + "2023-06-23, SELL EXECUTED, Price: 30012.18, Cost: 150010.00, Comm 0.00\n", + "2023-06-23, OPERATION PROFIT, GROSS 50.90, NET 50.90\n", + "2023-06-23, Close, 29931.99\n", + "2023-06-23, Close, 30008.12\n", + "2023-06-23, Close, 30145.22\n", + "2023-06-23, BUY CREATE, 30145.22\n", + "2023-06-23, BUY EXECUTED, Price: 30145.21, Cost: 150726.05, Comm 0.00\n", + "2023-06-23, Close, 30075.99\n", + "2023-06-23, Close, 30140.87\n", + "2023-06-23, Close, 30106.50\n", + "2023-06-23, Close, 30077.82\n", + "2023-06-23, Close, 30282.04\n", + "2023-06-23, Close, 31238.00\n", + "2023-06-23, Close, 31097.02\n", + "2023-06-23, Close, 31241.10\n", + "2023-06-23, Close, 30943.68\n", + "2023-06-23, Close, 30880.87\n", + "2023-06-23, Close, 30906.07\n", + "2023-06-23, Close, 30659.80\n", + "2023-06-23, Close, 30644.17\n", + "2023-06-23, Close, 30688.50\n", + "2023-06-24, Close, 30488.20\n", + "2023-06-24, SELL CREATE, 30488.20\n", + "2023-06-24, SELL EXECUTED, Price: 30488.20, Cost: 150726.05, Comm 0.00\n", + "2023-06-24, OPERATION PROFIT, GROSS 1714.95, NET 1714.95\n", + "2023-06-24, Close, 30605.30\n", + "2023-06-24, Close, 30756.60\n", + "2023-06-24, BUY CREATE, 30756.60\n", + "2023-06-24, BUY EXECUTED, Price: 30756.61, Cost: 153783.05, Comm 0.00\n", + "2023-06-24, Close, 30730.01\n", + "2023-06-24, SELL CREATE, 30730.01\n", + "2023-06-24, SELL EXECUTED, Price: 30730.00, Cost: 153783.05, Comm 0.00\n", + "2023-06-24, OPERATION PROFIT, GROSS -133.05, NET -133.05\n", + "2023-06-24, Close, 30703.68\n", + "2023-06-24, Close, 30725.01\n", + "2023-06-24, Close, 30697.94\n", + "2023-06-24, Close, 30567.58\n", + "2023-06-24, Close, 30608.82\n", + "2023-06-24, Close, 30621.63\n", + "2023-06-24, Close, 30739.98\n", + "2023-06-24, BUY CREATE, 30739.98\n", + "2023-06-24, BUY EXECUTED, Price: 30739.99, Cost: 153699.95, Comm 0.00\n", + "2023-06-24, Close, 30684.38\n", + "2023-06-24, Close, 30694.57\n", + "2023-06-24, Close, 30640.69\n", + "2023-06-24, SELL CREATE, 30640.69\n", + "2023-06-24, SELL EXECUTED, Price: 30640.69, Cost: 153699.95, Comm 0.00\n", + "2023-06-24, OPERATION PROFIT, GROSS -496.50, NET -496.50\n", + "2023-06-24, Close, 30688.53\n", + "2023-06-24, BUY CREATE, 30688.53\n", + "2023-06-24, BUY EXECUTED, Price: 30688.52, Cost: 153442.60, Comm 0.00\n", + "2023-06-24, Close, 30398.71\n", + "2023-06-24, SELL CREATE, 30398.71\n", + "2023-06-24, SELL EXECUTED, Price: 30398.72, Cost: 153442.60, Comm 0.00\n", + "2023-06-24, OPERATION PROFIT, GROSS -1449.00, NET -1449.00\n", + "2023-06-24, Close, 30510.01\n", + "2023-06-24, Close, 30584.49\n", + "2023-06-24, Close, 30638.38\n", + "2023-06-24, BUY CREATE, 30638.38\n", + "2023-06-24, Order Canceled/Margin/Rejected\n", + "2023-06-24, Close, 30627.84\n", + "2023-06-24, Close, 30507.56\n", + "2023-06-24, Close, 30513.78\n", + "2023-06-24, Close, 30515.33\n", + "2023-06-24, Close, 30527.43\n", + "2023-06-25, Close, 30513.23\n", + "2023-06-25, Close, 30598.52\n", + "2023-06-25, BUY CREATE, 30598.52\n", + "2023-06-25, Order Canceled/Margin/Rejected\n", + "2023-06-25, Close, 30621.30\n", + "2023-06-25, BUY CREATE, 30621.30\n", + "2023-06-25, Order Canceled/Margin/Rejected\n", + "2023-06-25, Close, 30748.46\n", + "2023-06-25, BUY CREATE, 30748.46\n", + "2023-06-25, Order Canceled/Margin/Rejected\n", + "2023-06-25, Close, 30890.66\n", + "2023-06-25, BUY CREATE, 30890.66\n", + "2023-06-25, Order Canceled/Margin/Rejected\n", + "2023-06-25, Close, 30858.56\n", + "2023-06-25, BUY CREATE, 30858.56\n", + "2023-06-25, Order Canceled/Margin/Rejected\n", + "2023-06-25, Close, 30872.66\n", + "2023-06-25, BUY CREATE, 30872.66\n", + "2023-06-25, Order Canceled/Margin/Rejected\n", + "2023-06-25, Close, 30723.78\n", + "2023-06-25, BUY CREATE, 30723.78\n", + "2023-06-25, Order Canceled/Margin/Rejected\n", + "2023-06-25, Close, 30735.93\n", + "2023-06-25, BUY CREATE, 30735.93\n", + "2023-06-25, Order Canceled/Margin/Rejected\n", + "2023-06-25, Close, 30683.99\n", + "2023-06-25, BUY CREATE, 30683.99\n", + "2023-06-25, Order Canceled/Margin/Rejected\n", + "2023-06-25, Close, 30621.27\n", + "2023-06-25, Close, 30716.03\n", + "2023-06-25, BUY CREATE, 30716.03\n", + "2023-06-25, Order Canceled/Margin/Rejected\n", + "2023-06-25, Close, 30669.40\n", + "2023-06-25, Close, 30676.50\n", + "2023-06-25, Close, 30551.82\n", + "2023-06-25, Close, 30585.16\n", + "2023-06-25, Close, 30590.29\n", + "2023-06-25, Close, 30526.01\n", + "2023-06-25, Close, 30453.03\n", + "2023-06-25, Close, 30429.78\n", + "2023-06-25, Close, 30374.00\n", + "2023-06-25, Close, 30451.52\n", + "2023-06-25, Close, 30500.86\n", + "2023-06-25, Close, 30462.66\n", + "2023-06-26, Close, 30394.89\n", + "2023-06-26, Close, 30172.74\n", + "2023-06-26, Close, 30222.48\n", + "2023-06-26, Close, 30296.36\n", + "2023-06-26, Close, 30245.17\n", + "2023-06-26, Close, 30215.05\n", + "2023-06-26, Close, 30483.97\n", + "2023-06-26, BUY CREATE, 30483.97\n", + "2023-06-26, BUY EXECUTED, Price: 30483.97, Cost: 152419.85, Comm 0.00\n", + "2023-06-26, Close, 30404.29\n", + "2023-06-26, Close, 30405.75\n", + "2023-06-26, Close, 30268.00\n", + "2023-06-26, SELL CREATE, 30268.00\n", + "2023-06-26, SELL EXECUTED, Price: 30268.00, Cost: 152419.85, Comm 0.00\n", + "2023-06-26, OPERATION PROFIT, GROSS -1079.85, NET -1079.85\n", + "2023-06-26, Close, 30267.99\n", + "2023-06-26, Close, 30322.89\n", + "2023-06-26, Close, 30359.30\n", + "2023-06-26, BUY CREATE, 30359.30\n", + "2023-06-26, Order Canceled/Margin/Rejected\n", + "2023-06-26, Close, 30639.14\n", + "2023-06-26, BUY CREATE, 30639.14\n", + "2023-06-26, Order Canceled/Margin/Rejected\n", + "2023-06-26, Close, 30394.56\n", + "2023-06-26, BUY CREATE, 30394.56\n", + "2023-06-26, Order Canceled/Margin/Rejected\n", + "2023-06-26, Close, 30419.62\n", + "2023-06-26, BUY CREATE, 30419.62\n", + "2023-06-26, Order Canceled/Margin/Rejected\n", + "2023-06-26, Close, 30100.47\n", + "2023-06-26, Close, 30084.63\n", + "2023-06-26, Close, 30213.36\n", + "2023-06-26, Close, 30243.97\n", + "2023-06-26, Close, 30161.78\n", + "2023-06-26, Close, 30158.07\n", + "2023-06-26, Close, 30227.51\n", + "2023-06-26, Close, 30267.99\n", + "2023-06-27, Close, 30354.02\n", + "2023-06-27, BUY CREATE, 30354.02\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30373.77\n", + "2023-06-27, BUY CREATE, 30373.77\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30480.06\n", + "2023-06-27, BUY CREATE, 30480.06\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30371.57\n", + "2023-06-27, BUY CREATE, 30371.57\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30348.80\n", + "2023-06-27, BUY CREATE, 30348.80\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30317.90\n", + "2023-06-27, BUY CREATE, 30317.90\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30320.14\n", + "2023-06-27, BUY CREATE, 30320.14\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30411.22\n", + "2023-06-27, BUY CREATE, 30411.22\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30395.14\n", + "2023-06-27, BUY CREATE, 30395.14\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30377.98\n", + "2023-06-27, BUY CREATE, 30377.98\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30656.57\n", + "2023-06-27, BUY CREATE, 30656.57\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30729.10\n", + "2023-06-27, BUY CREATE, 30729.10\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30713.99\n", + "2023-06-27, BUY CREATE, 30713.99\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30610.41\n", + "2023-06-27, BUY CREATE, 30610.41\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30808.63\n", + "2023-06-27, BUY CREATE, 30808.63\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30498.74\n", + "2023-06-27, BUY CREATE, 30498.74\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30710.65\n", + "2023-06-27, BUY CREATE, 30710.65\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30733.20\n", + "2023-06-27, BUY CREATE, 30733.20\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30686.32\n", + "2023-06-27, BUY CREATE, 30686.32\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30648.03\n", + "2023-06-27, BUY CREATE, 30648.03\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30649.96\n", + "2023-06-27, BUY CREATE, 30649.96\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30717.42\n", + "2023-06-27, BUY CREATE, 30717.42\n", + "2023-06-27, Order Canceled/Margin/Rejected\n", + "2023-06-27, Close, 30586.45\n", + "2023-06-27, Close, 30692.44\n", + "2023-06-27, BUY CREATE, 30692.44\n", + "2023-06-28, Order Canceled/Margin/Rejected\n", + "2023-06-28, Close, 30614.00\n", + "2023-06-28, Close, 30498.42\n", + "2023-06-28, Close, 30420.01\n", + "2023-06-28, Close, 30452.75\n", + "2023-06-28, Close, 30482.31\n", + "2023-06-28, Close, 30452.53\n", + "2023-06-28, Close, 30375.09\n", + "2023-06-28, Close, 30186.13\n", + "2023-06-28, Close, 30278.00\n", + "2023-06-28, Close, 30304.42\n", + "2023-06-28, Close, 30337.62\n", + "2023-06-28, Close, 30310.73\n", + "2023-06-28, Close, 30101.99\n", + "2023-06-28, Close, 30202.34\n", + "2023-06-28, Close, 30316.00\n", + "2023-06-28, Close, 30411.06\n", + "2023-06-28, BUY CREATE, 30411.06\n", + "2023-06-28, Order Canceled/Margin/Rejected\n", + "2023-06-28, Close, 30258.00\n", + "2023-06-28, Close, 30155.23\n", + "2023-06-28, Close, 30198.15\n", + "2023-06-28, Close, 30100.00\n", + "2023-06-28, Close, 30108.01\n", + "2023-06-28, Close, 30134.38\n", + "2023-06-28, Close, 30105.94\n", + "2023-06-28, Close, 30077.41\n", + "2023-06-29, Close, 30079.99\n", + "2023-06-29, Close, 30168.77\n", + "2023-06-29, Close, 30121.15\n", + "2023-06-29, Close, 30176.00\n", + "2023-06-29, BUY CREATE, 30176.00\n", + "2023-06-29, BUY EXECUTED, Price: 30176.00, Cost: 150880.00, Comm 0.00\n", + "2023-06-29, Close, 30221.30\n", + "2023-06-29, Close, 30183.00\n", + "2023-06-29, Close, 30235.56\n", + "2023-06-29, Close, 30340.29\n", + "2023-06-29, Close, 30383.98\n", + "2023-06-29, Close, 30433.33\n", + "2023-06-29, Close, 30697.11\n", + "2023-06-29, Close, 30670.94\n", + "2023-06-29, Close, 30623.93\n", + "2023-06-29, Close, 30564.00\n", + "2023-06-29, Close, 30450.01\n", + "2023-06-29, Close, 30478.80\n", + "2023-06-29, Close, 30502.01\n", + "2023-06-29, Close, 30543.33\n", + "2023-06-29, Close, 30566.80\n", + "2023-06-29, Close, 30584.99\n", + "2023-06-29, Close, 30398.98\n", + "2023-06-29, SELL CREATE, 30398.98\n", + "2023-06-29, SELL EXECUTED, Price: 30398.97, Cost: 150880.00, Comm 0.00\n", + "2023-06-29, OPERATION PROFIT, GROSS 1114.85, NET 1114.85\n", + "2023-06-29, Close, 30417.34\n", + "2023-06-29, Close, 30409.34\n", + "2023-06-29, Close, 30447.31\n", + "2023-06-30, Close, 30441.34\n", + "2023-06-30, Close, 30384.53\n", + "2023-06-30, Close, 30661.82\n", + "2023-06-30, BUY CREATE, 30661.82\n", + "2023-06-30, Order Canceled/Margin/Rejected\n", + "2023-06-30, Close, 30745.05\n", + "2023-06-30, BUY CREATE, 30745.05\n", + "2023-06-30, Order Canceled/Margin/Rejected\n", + "2023-06-30, Close, 30877.99\n", + "2023-06-30, BUY CREATE, 30877.99\n", + "2023-06-30, Order Canceled/Margin/Rejected\n", + "2023-06-30, Close, 30736.63\n", + "2023-06-30, BUY CREATE, 30736.63\n", + "2023-06-30, Order Canceled/Margin/Rejected\n", + "2023-06-30, Close, 30665.99\n", + "2023-06-30, BUY CREATE, 30665.99\n", + "2023-06-30, Order Canceled/Margin/Rejected\n", + "2023-06-30, Close, 30765.09\n", + "2023-06-30, BUY CREATE, 30765.09\n", + "2023-06-30, Order Canceled/Margin/Rejected\n", + "2023-06-30, Close, 30854.00\n", + "2023-06-30, BUY CREATE, 30854.00\n", + "2023-06-30, Order Canceled/Margin/Rejected\n", + "2023-06-30, Close, 30768.83\n", + "2023-06-30, BUY CREATE, 30768.83\n", + "2023-06-30, Order Canceled/Margin/Rejected\n", + "2023-06-30, Close, 30811.52\n", + "2023-06-30, BUY CREATE, 30811.52\n", + "2023-06-30, Order Canceled/Margin/Rejected\n", + "2023-06-30, Close, 30910.01\n", + "2023-06-30, BUY CREATE, 30910.01\n", + "2023-06-30, Order Canceled/Margin/Rejected\n", + "2023-06-30, Close, 31010.11\n", + "2023-06-30, BUY CREATE, 31010.11\n", + "2023-06-30, Order Canceled/Margin/Rejected\n", + "2023-06-30, Close, 30135.62\n", + "2023-06-30, Close, 30092.50\n", + "2023-06-30, Close, 30067.72\n", + "2023-06-30, Close, 30400.53\n", + "2023-06-30, Close, 30455.80\n", + "2023-06-30, Close, 30359.99\n", + "2023-06-30, Close, 30372.36\n", + "2023-06-30, Close, 30397.54\n", + "2023-06-30, Close, 30479.56\n", + "2023-06-30, Close, 30476.68\n", + "2023-06-30, Close, 30472.00\n", + "2023-07-01, Close, 30469.83\n", + "2023-07-01, BUY CREATE, 30469.83\n", + "2023-07-01, BUY EXECUTED, Price: 30469.82, Cost: 152349.10, Comm 0.00\n", + "2023-07-01, Close, 30447.78\n", + "2023-07-01, Close, 30420.85\n", + "2023-07-01, Close, 30398.01\n", + "2023-07-01, Close, 30389.15\n", + "2023-07-01, Close, 30429.36\n", + "2023-07-01, Close, 30450.26\n", + "2023-07-01, Close, 30459.88\n", + "2023-07-01, Close, 30441.70\n", + "2023-07-01, Close, 30441.23\n", + "2023-07-01, Close, 30469.98\n", + "2023-07-01, Close, 30523.02\n", + "2023-07-01, Close, 30564.01\n", + "2023-07-01, Close, 30565.26\n", + "2023-07-01, Close, 30608.52\n", + "2023-07-01, Close, 30572.58\n", + "2023-07-01, Close, 30572.00\n", + "2023-07-01, Close, 30573.86\n", + "2023-07-01, Close, 30608.87\n", + "2023-07-01, Close, 30609.51\n", + "2023-07-01, Close, 30582.58\n", + "2023-07-01, Close, 30584.65\n", + "2023-07-01, Close, 30577.64\n", + "2023-07-01, Close, 30585.90\n", + "2023-07-02, Close, 30575.77\n", + "2023-07-02, Close, 30567.56\n", + "2023-07-02, SELL CREATE, 30567.56\n", + "2023-07-02, SELL EXECUTED, Price: 30567.57, Cost: 152349.10, Comm 0.00\n", + "2023-07-02, OPERATION PROFIT, GROSS 488.75, NET 488.75\n", + "2023-07-02, Close, 30542.00\n", + "2023-07-02, Close, 30509.31\n", + "2023-07-02, Close, 30527.67\n", + "2023-07-02, Close, 30481.27\n", + "2023-07-02, Close, 30480.00\n", + "2023-07-02, Close, 30513.01\n", + "2023-07-02, Close, 30484.01\n", + "2023-07-02, Close, 30516.81\n", + "2023-07-02, Close, 30509.99\n", + "2023-07-02, Close, 30544.74\n", + "2023-07-02, BUY CREATE, 30544.74\n", + "2023-07-02, BUY EXECUTED, Price: 30544.74, Cost: 152723.70, Comm 0.00\n", + "2023-07-02, Close, 30525.99\n", + "2023-07-02, SELL CREATE, 30525.99\n", + "2023-07-02, SELL EXECUTED, Price: 30525.99, Cost: 152723.70, Comm 0.00\n", + "2023-07-02, OPERATION PROFIT, GROSS -93.75, NET -93.75\n", + "2023-07-02, Close, 30517.96\n", + "2023-07-02, Close, 30590.23\n", + "2023-07-02, BUY CREATE, 30590.23\n", + "2023-07-02, Order Canceled/Margin/Rejected\n", + "2023-07-02, Close, 30498.01\n", + "2023-07-02, Close, 30561.58\n", + "2023-07-02, BUY CREATE, 30561.58\n", + "2023-07-02, BUY EXECUTED, Price: 30561.57, Cost: 152807.85, Comm 0.00\n", + "2023-07-02, Close, 30441.20\n", + "2023-07-02, SELL CREATE, 30441.20\n", + "2023-07-02, SELL EXECUTED, Price: 30441.20, Cost: 152807.85, Comm 0.00\n", + "2023-07-02, OPERATION PROFIT, GROSS -601.85, NET -601.85\n", + "2023-07-02, Close, 30523.07\n", + "2023-07-02, BUY CREATE, 30523.07\n", + "2023-07-02, Order Canceled/Margin/Rejected\n", + "2023-07-02, Close, 30557.74\n", + "2023-07-02, BUY CREATE, 30557.74\n", + "2023-07-02, Order Canceled/Margin/Rejected\n", + "2023-07-02, Close, 30588.47\n", + "2023-07-02, BUY CREATE, 30588.47\n", + "2023-07-02, Order Canceled/Margin/Rejected\n", + "2023-07-02, Close, 30557.44\n", + "2023-07-02, BUY CREATE, 30557.44\n", + "2023-07-02, Order Canceled/Margin/Rejected\n", + "2023-07-02, Close, 30651.29\n", + "2023-07-02, BUY CREATE, 30651.29\n", + "2023-07-02, Order Canceled/Margin/Rejected\n", + "2023-07-02, Close, 30617.03\n", + "2023-07-02, BUY CREATE, 30617.03\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 30637.99\n", + "2023-07-03, BUY CREATE, 30637.99\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 30660.86\n", + "2023-07-03, BUY CREATE, 30660.86\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 30755.00\n", + "2023-07-03, BUY CREATE, 30755.00\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 30756.65\n", + "2023-07-03, BUY CREATE, 30756.65\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 30679.99\n", + "2023-07-03, BUY CREATE, 30679.99\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 30673.62\n", + "2023-07-03, BUY CREATE, 30673.62\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 30651.25\n", + "2023-07-03, BUY CREATE, 30651.25\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 30667.19\n", + "2023-07-03, BUY CREATE, 30667.19\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 30640.12\n", + "2023-07-03, Close, 30610.61\n", + "2023-07-03, Close, 30640.09\n", + "2023-07-03, Close, 30625.22\n", + "2023-07-03, Close, 30653.06\n", + "2023-07-03, Close, 30653.84\n", + "2023-07-03, Close, 30736.27\n", + "2023-07-03, BUY CREATE, 30736.27\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 31068.64\n", + "2023-07-03, BUY CREATE, 31068.64\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 31042.22\n", + "2023-07-03, BUY CREATE, 31042.22\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 31000.98\n", + "2023-07-03, BUY CREATE, 31000.98\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 31199.14\n", + "2023-07-03, BUY CREATE, 31199.14\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 31255.84\n", + "2023-07-03, BUY CREATE, 31255.84\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 31121.18\n", + "2023-07-03, BUY CREATE, 31121.18\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 31050.23\n", + "2023-07-03, BUY CREATE, 31050.23\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 31120.69\n", + "2023-07-03, BUY CREATE, 31120.69\n", + "2023-07-03, Order Canceled/Margin/Rejected\n", + "2023-07-03, Close, 31156.20\n", + "2023-07-03, BUY CREATE, 31156.20\n", + "2023-07-04, Order Canceled/Margin/Rejected\n", + "2023-07-04, Close, 31112.86\n", + "2023-07-04, BUY CREATE, 31112.86\n", + "2023-07-04, Order Canceled/Margin/Rejected\n", + "2023-07-04, Close, 31288.80\n", + "2023-07-04, BUY CREATE, 31288.80\n", + "2023-07-04, Order Canceled/Margin/Rejected\n", + "2023-07-04, Close, 31259.77\n", + "2023-07-04, BUY CREATE, 31259.77\n", + "2023-07-04, Order Canceled/Margin/Rejected\n", + "2023-07-04, Close, 31195.69\n", + "2023-07-04, BUY CREATE, 31195.69\n", + "2023-07-04, Order Canceled/Margin/Rejected\n", + "2023-07-04, Close, 31058.00\n", + "2023-07-04, Close, 30972.70\n", + "2023-07-04, Close, 30999.55\n", + "2023-07-04, Close, 30911.41\n", + "2023-07-04, Close, 30930.76\n", + "2023-07-04, Close, 31016.91\n", + "2023-07-04, Close, 31025.64\n", + "2023-07-04, Close, 31067.99\n", + "2023-07-04, Close, 31044.90\n", + "2023-07-04, Close, 30999.55\n", + "2023-07-04, Close, 30972.40\n", + "2023-07-04, Close, 30964.37\n", + "2023-07-04, Close, 30960.29\n", + "2023-07-04, Close, 30900.01\n", + "2023-07-04, Close, 30902.00\n", + "2023-07-04, Close, 30696.84\n", + "2023-07-04, Close, 30797.13\n", + "2023-07-04, Close, 30803.72\n", + "2023-07-04, Close, 30820.01\n", + "2023-07-04, Close, 30766.51\n", + "2023-07-05, Close, 30762.27\n", + "2023-07-05, Close, 30795.93\n", + "2023-07-05, Close, 30837.99\n", + "2023-07-05, Close, 30868.71\n", + "2023-07-05, BUY CREATE, 30868.71\n", + "2023-07-05, Order Canceled/Margin/Rejected\n", + "2023-07-05, Close, 30834.86\n", + "2023-07-05, Close, 30814.08\n", + "2023-07-05, Close, 30810.72\n", + "2023-07-05, Close, 30774.25\n", + "2023-07-05, Close, 30764.29\n", + "2023-07-05, Close, 30680.00\n", + "2023-07-05, Close, 30430.21\n", + "2023-07-05, Close, 30404.30\n", + "2023-07-05, Close, 30321.22\n", + "2023-07-05, Close, 30357.31\n", + "2023-07-05, Close, 30417.65\n", + "2023-07-05, Close, 30356.11\n", + "2023-07-05, Close, 30462.60\n", + "2023-07-05, Close, 30523.21\n", + "2023-07-05, Close, 30505.52\n", + "2023-07-05, Close, 30431.95\n", + "2023-07-05, Close, 30460.29\n", + "2023-07-05, Close, 30469.99\n", + "2023-07-05, Close, 30436.92\n", + "2023-07-05, Close, 30504.81\n", + "2023-07-05, BUY CREATE, 30504.81\n", + "2023-07-06, Order Canceled/Margin/Rejected\n", + "2023-07-06, Close, 30413.10\n", + "2023-07-06, Close, 30476.71\n", + "2023-07-06, BUY CREATE, 30476.71\n", + "2023-07-06, Order Canceled/Margin/Rejected\n", + "2023-07-06, Close, 30471.65\n", + "2023-07-06, BUY CREATE, 30471.65\n", + "2023-07-06, Order Canceled/Margin/Rejected\n", + "2023-07-06, Close, 30490.85\n", + "2023-07-06, BUY CREATE, 30490.85\n", + "2023-07-06, Order Canceled/Margin/Rejected\n", + "2023-07-06, Close, 30465.40\n", + "2023-07-06, BUY CREATE, 30465.40\n", + "2023-07-06, BUY EXECUTED, Price: 30465.40, Cost: 152327.00, Comm 0.00\n", + "2023-07-06, Close, 30582.51\n", + "2023-07-06, Close, 30692.56\n", + "2023-07-06, Close, 30803.19\n", + "2023-07-06, Close, 31329.97\n", + "2023-07-06, Close, 31069.60\n", + "2023-07-06, Close, 31231.64\n", + "2023-07-06, Close, 30846.55\n", + "2023-07-06, Close, 30600.31\n", + "2023-07-06, SELL CREATE, 30600.31\n", + "2023-07-06, SELL EXECUTED, Price: 30600.30, Cost: 152327.00, Comm 0.00\n", + "2023-07-06, OPERATION PROFIT, GROSS 674.50, NET 674.50\n", + "2023-07-06, Close, 30373.47\n", + "2023-07-06, Close, 30214.35\n", + "2023-07-06, Close, 30407.01\n", + "2023-07-06, Close, 30313.99\n", + "2023-07-06, Close, 30294.86\n", + "2023-07-06, Close, 30378.01\n", + "2023-07-06, Close, 30309.88\n", + "2023-07-06, Close, 30315.16\n", + "2023-07-06, Close, 30224.72\n", + "2023-07-06, Close, 30167.30\n", + "2023-07-06, Close, 29895.43\n", + "2023-07-07, Close, 30052.60\n", + "2023-07-07, Close, 30086.00\n", + "2023-07-07, Close, 30102.98\n", + "2023-07-07, Close, 30135.40\n", + "2023-07-07, Close, 30087.81\n", + "2023-07-07, Close, 30208.40\n", + "2023-07-07, BUY CREATE, 30208.40\n", + "2023-07-07, BUY EXECUTED, Price: 30208.40, Cost: 151042.00, Comm 0.00\n", + "2023-07-07, Close, 30117.00\n", + "2023-07-07, SELL CREATE, 30117.00\n", + "2023-07-07, SELL EXECUTED, Price: 30117.00, Cost: 151042.00, Comm 0.00\n", + "2023-07-07, OPERATION PROFIT, GROSS -457.00, NET -457.00\n", + "2023-07-07, Close, 30007.40\n", + "2023-07-07, Close, 30055.41\n", + "2023-07-07, Close, 30138.79\n", + "2023-07-07, BUY CREATE, 30138.79\n", + "2023-07-07, BUY EXECUTED, Price: 30138.79, Cost: 150693.95, Comm 0.00\n", + "2023-07-07, Close, 30165.88\n", + "2023-07-07, Close, 30118.70\n", + "2023-07-07, Close, 30203.98\n", + "2023-07-07, Close, 30385.39\n", + "2023-07-07, Close, 30411.49\n", + "2023-07-07, Close, 30390.83\n", + "2023-07-07, Close, 30354.85\n", + "2023-07-07, Close, 30238.46\n", + "2023-07-07, Close, 30166.32\n", + "2023-07-07, SELL CREATE, 30166.32\n", + "2023-07-07, SELL EXECUTED, Price: 30166.32, Cost: 150693.95, Comm 0.00\n", + "2023-07-07, OPERATION PROFIT, GROSS 137.65, NET 137.65\n", + "2023-07-07, Close, 30246.20\n", + "2023-07-07, BUY CREATE, 30246.20\n", + "2023-07-07, BUY EXECUTED, Price: 30246.21, Cost: 151231.05, Comm 0.00\n", + "2023-07-07, Close, 30264.12\n", + "2023-07-07, Close, 30289.64\n", + "2023-07-07, Close, 30304.08\n", + "2023-07-07, Close, 30344.70\n", + "2023-07-08, Close, 30286.29\n", + "2023-07-08, Close, 30304.58\n", + "2023-07-08, Close, 30355.42\n", + "2023-07-08, Close, 30274.83\n", + "2023-07-08, SELL CREATE, 30274.83\n", + "2023-07-08, SELL EXECUTED, Price: 30274.82, Cost: 151231.05, Comm 0.00\n", + "2023-07-08, OPERATION PROFIT, GROSS 143.05, NET 143.05\n", + "2023-07-08, Close, 30235.89\n", + "2023-07-08, Close, 30239.49\n", + "2023-07-08, Close, 30176.71\n", + "2023-07-08, Close, 30193.36\n", + "2023-07-08, Close, 30276.01\n", + "2023-07-08, BUY CREATE, 30276.01\n", + "2023-07-08, BUY EXECUTED, Price: 30276.02, Cost: 151380.10, Comm 0.00\n", + "2023-07-08, Close, 30248.72\n", + "2023-07-08, SELL CREATE, 30248.72\n", + "2023-07-08, SELL EXECUTED, Price: 30248.71, Cost: 151380.10, Comm 0.00\n", + "2023-07-08, OPERATION PROFIT, GROSS -136.55, NET -136.55\n", + "2023-07-08, Close, 30222.80\n", + "2023-07-08, Close, 30201.71\n", + "2023-07-08, Close, 30171.85\n", + "2023-07-08, Close, 30209.32\n", + "2023-07-08, Close, 30204.99\n", + "2023-07-08, Close, 30208.00\n", + "2023-07-08, Close, 30254.57\n", + "2023-07-08, BUY CREATE, 30254.57\n", + "2023-07-08, BUY EXECUTED, Price: 30254.58, Cost: 151272.90, Comm 0.00\n", + "2023-07-08, Close, 30254.69\n", + "2023-07-08, Close, 30201.74\n", + "2023-07-08, SELL CREATE, 30201.74\n", + "2023-07-08, SELL EXECUTED, Price: 30201.73, Cost: 151272.90, Comm 0.00\n", + "2023-07-08, OPERATION PROFIT, GROSS -264.25, NET -264.25\n", + "2023-07-08, Close, 30112.00\n", + "2023-07-08, Close, 30158.21\n", + "2023-07-08, Close, 30180.80\n", + "2023-07-08, Close, 30224.50\n", + "2023-07-08, BUY CREATE, 30224.50\n", + "2023-07-08, BUY EXECUTED, Price: 30224.50, Cost: 151122.50, Comm 0.00\n", + "2023-07-08, Close, 30284.63\n", + "2023-07-09, Close, 30336.01\n", + "2023-07-09, Close, 30332.26\n", + "2023-07-09, Close, 30301.04\n", + "2023-07-09, Close, 30287.99\n", + "2023-07-09, Close, 30275.35\n", + "2023-07-09, Close, 30260.67\n", + "2023-07-09, Close, 30254.79\n", + "2023-07-09, Close, 30265.00\n", + "2023-07-09, Close, 30305.51\n", + "2023-07-09, Close, 30276.00\n", + "2023-07-09, Close, 30262.89\n", + "2023-07-09, SELL CREATE, 30262.89\n", + "2023-07-09, SELL EXECUTED, Price: 30262.89, Cost: 151122.50, Comm 0.00\n", + "2023-07-09, OPERATION PROFIT, GROSS 191.95, NET 191.95\n", + "2023-07-09, Close, 30266.69\n", + "2023-07-09, Close, 30329.99\n", + "2023-07-09, BUY CREATE, 30329.99\n", + "2023-07-09, BUY EXECUTED, Price: 30329.99, Cost: 151649.95, Comm 0.00\n", + "2023-07-09, Close, 30265.14\n", + "2023-07-09, SELL CREATE, 30265.14\n", + "2023-07-09, SELL EXECUTED, Price: 30265.14, Cost: 151649.95, Comm 0.00\n", + "2023-07-09, OPERATION PROFIT, GROSS -324.25, NET -324.25\n", + "2023-07-09, Close, 30341.02\n", + "2023-07-09, BUY CREATE, 30341.02\n", + "2023-07-09, BUY EXECUTED, Price: 30341.02, Cost: 151705.10, Comm 0.00\n", + "2023-07-09, Close, 30349.47\n", + "2023-07-09, Close, 30287.99\n", + "2023-07-09, SELL CREATE, 30287.99\n", + "2023-07-09, SELL EXECUTED, Price: 30287.99, Cost: 151705.10, Comm 0.00\n", + "2023-07-09, OPERATION PROFIT, GROSS -265.15, NET -265.15\n", + "2023-07-09, Close, 30288.29\n", + "2023-07-09, BUY CREATE, 30288.29\n", + "2023-07-09, BUY EXECUTED, Price: 30288.30, Cost: 151441.50, Comm 0.00\n", + "2023-07-09, Close, 30258.01\n", + "2023-07-09, SELL CREATE, 30258.01\n", + "2023-07-09, SELL EXECUTED, Price: 30258.00, Cost: 151441.50, Comm 0.00\n", + "2023-07-09, OPERATION PROFIT, GROSS -151.50, NET -151.50\n", + "2023-07-09, Close, 30242.42\n", + "2023-07-09, Close, 30193.99\n", + "2023-07-09, Close, 30153.90\n", + "2023-07-09, Close, 30174.00\n", + "2023-07-09, Close, 30160.71\n", + "2023-07-10, Close, 30090.27\n", + "2023-07-10, Close, 30048.80\n", + "2023-07-10, Close, 30200.00\n", + "2023-07-10, Close, 30156.17\n", + "2023-07-10, Close, 30118.07\n", + "2023-07-10, Close, 30082.25\n", + "2023-07-10, Close, 30089.64\n", + "2023-07-10, Close, 30112.10\n", + "2023-07-10, Close, 30099.21\n", + "2023-07-10, Close, 30140.00\n", + "2023-07-10, BUY CREATE, 30140.00\n", + "2023-07-10, BUY EXECUTED, Price: 30140.01, Cost: 150700.05, Comm 0.00\n", + "2023-07-10, Close, 30183.45\n", + "2023-07-10, Close, 30240.00\n", + "2023-07-10, Close, 30161.47\n", + "2023-07-10, Close, 30209.70\n", + "2023-07-10, Close, 30310.03\n", + "2023-07-10, Close, 30312.81\n", + "2023-07-10, Close, 30351.18\n", + "2023-07-10, Close, 30278.20\n", + "2023-07-10, Close, 30529.00\n", + "2023-07-10, Close, 30837.40\n", + "2023-07-10, Close, 30779.01\n", + "2023-07-10, Close, 30302.21\n", + "2023-07-10, SELL CREATE, 30302.21\n", + "2023-07-10, SELL EXECUTED, Price: 30302.22, Cost: 150700.05, Comm 0.00\n", + "2023-07-10, OPERATION PROFIT, GROSS 811.05, NET 811.05\n", + "2023-07-10, Close, 30347.37\n", + "2023-07-10, BUY CREATE, 30347.37\n", + "2023-07-10, BUY EXECUTED, Price: 30347.38, Cost: 151736.90, Comm 0.00\n", + "2023-07-10, Close, 30411.57\n", + "2023-07-11, Close, 30419.99\n", + "2023-07-11, Close, 30586.26\n", + "2023-07-11, Close, 30483.69\n", + "2023-07-11, Close, 30476.00\n", + "2023-07-11, Close, 30441.19\n", + "2023-07-11, SELL CREATE, 30441.19\n", + "2023-07-11, SELL EXECUTED, Price: 30441.19, Cost: 151736.90, Comm 0.00\n", + "2023-07-11, OPERATION PROFIT, GROSS 469.05, NET 469.05\n", + "2023-07-11, Close, 30456.00\n", + "2023-07-11, Close, 30634.59\n", + "2023-07-11, BUY CREATE, 30634.59\n", + "2023-07-11, Order Canceled/Margin/Rejected\n", + "2023-07-11, Close, 30535.38\n", + "2023-07-11, BUY CREATE, 30535.38\n", + "2023-07-11, BUY EXECUTED, Price: 30535.38, Cost: 152676.90, Comm 0.00\n", + "2023-07-11, Close, 30495.91\n", + "2023-07-11, SELL CREATE, 30495.91\n", + "2023-07-11, SELL EXECUTED, Price: 30495.92, Cost: 152676.90, Comm 0.00\n", + "2023-07-11, OPERATION PROFIT, GROSS -197.30, NET -197.30\n", + "2023-07-11, Close, 30449.83\n", + "2023-07-11, Close, 30394.94\n", + "2023-07-11, Close, 30404.31\n", + "2023-07-11, Close, 30433.05\n", + "2023-07-11, Close, 30450.00\n", + "2023-07-11, Close, 30527.43\n", + "2023-07-11, BUY CREATE, 30527.43\n", + "2023-07-11, BUY EXECUTED, Price: 30527.43, Cost: 152637.15, Comm 0.00\n", + "2023-07-11, Close, 30596.45\n", + "2023-07-11, Close, 30649.30\n", + "2023-07-11, Close, 30575.60\n", + "2023-07-11, Close, 30480.00\n", + "2023-07-11, SELL CREATE, 30480.00\n", + "2023-07-11, SELL EXECUTED, Price: 30480.01, Cost: 152637.15, Comm 0.00\n", + "2023-07-11, OPERATION PROFIT, GROSS -237.10, NET -237.10\n", + "2023-07-11, Close, 30581.99\n", + "2023-07-11, BUY CREATE, 30581.99\n", + "2023-07-11, Order Canceled/Margin/Rejected\n", + "2023-07-11, Close, 30571.52\n", + "2023-07-11, BUY CREATE, 30571.52\n", + "2023-07-11, Order Canceled/Margin/Rejected\n", + "2023-07-11, Close, 30570.18\n", + "2023-07-11, BUY CREATE, 30570.18\n", + "2023-07-11, Order Canceled/Margin/Rejected\n", + "2023-07-11, Close, 30584.57\n", + "2023-07-11, BUY CREATE, 30584.57\n", + "2023-07-11, Order Canceled/Margin/Rejected\n", + "2023-07-11, Close, 30622.10\n", + "2023-07-11, BUY CREATE, 30622.10\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30509.98\n", + "2023-07-12, Close, 30535.92\n", + "2023-07-12, Close, 30607.23\n", + "2023-07-12, BUY CREATE, 30607.23\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30588.32\n", + "2023-07-12, BUY CREATE, 30588.32\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30635.36\n", + "2023-07-12, BUY CREATE, 30635.36\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30654.00\n", + "2023-07-12, BUY CREATE, 30654.00\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30720.01\n", + "2023-07-12, BUY CREATE, 30720.01\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30740.00\n", + "2023-07-12, BUY CREATE, 30740.00\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30735.48\n", + "2023-07-12, BUY CREATE, 30735.48\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30724.01\n", + "2023-07-12, BUY CREATE, 30724.01\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30679.99\n", + "2023-07-12, BUY CREATE, 30679.99\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30776.25\n", + "2023-07-12, BUY CREATE, 30776.25\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30721.17\n", + "2023-07-12, BUY CREATE, 30721.17\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30666.33\n", + "2023-07-12, BUY CREATE, 30666.33\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30736.57\n", + "2023-07-12, BUY CREATE, 30736.57\n", + "2023-07-12, Order Canceled/Margin/Rejected\n", + "2023-07-12, Close, 30524.63\n", + "2023-07-12, Close, 30487.03\n", + "2023-07-12, Close, 30447.95\n", + "2023-07-12, Close, 30521.67\n", + "2023-07-12, Close, 30287.47\n", + "2023-07-12, Close, 30348.00\n", + "2023-07-12, Close, 30356.01\n", + "2023-07-12, Close, 30368.68\n", + "2023-07-12, Close, 30380.00\n", + "2023-07-13, Close, 30353.51\n", + "2023-07-13, Close, 30383.78\n", + "2023-07-13, Close, 30337.55\n", + "2023-07-13, Close, 30298.01\n", + "2023-07-13, Close, 30297.33\n", + "2023-07-13, Close, 30323.00\n", + "2023-07-13, Close, 30383.98\n", + "2023-07-13, BUY CREATE, 30383.98\n", + "2023-07-13, BUY EXECUTED, Price: 30383.99, Cost: 151919.95, Comm 0.00\n", + "2023-07-13, Close, 30366.02\n", + "2023-07-13, Close, 30411.99\n", + "2023-07-13, Close, 30576.68\n", + "2023-07-13, Close, 30578.84\n", + "2023-07-13, Close, 30543.99\n", + "2023-07-13, Close, 30520.02\n", + "2023-07-13, Close, 30663.43\n", + "2023-07-13, Close, 30571.99\n", + "2023-07-13, Close, 30917.48\n", + "2023-07-13, Close, 30826.46\n", + "2023-07-13, Close, 31070.08\n", + "2023-07-13, Close, 31255.00\n", + "2023-07-13, Close, 31606.01\n", + "2023-07-13, Close, 31372.91\n", + "2023-07-13, Close, 31254.01\n", + "2023-07-13, Close, 31309.17\n", + "2023-07-13, Close, 31454.23\n", + "2023-07-14, Close, 31444.01\n", + "2023-07-14, Close, 31418.88\n", + "2023-07-14, Close, 31459.24\n", + "2023-07-14, Close, 31460.00\n", + "2023-07-14, Close, 31390.53\n", + "2023-07-14, Close, 31360.48\n", + "2023-07-14, Close, 31291.22\n", + "2023-07-14, SELL CREATE, 31291.22\n", + "2023-07-14, SELL EXECUTED, Price: 31291.22, Cost: 151919.95, Comm 0.00\n", + "2023-07-14, OPERATION PROFIT, GROSS 4536.15, NET 4536.15\n", + "2023-07-14, Close, 31098.74\n", + "2023-07-14, Close, 31243.71\n", + "2023-07-14, Close, 31187.04\n", + "2023-07-14, Close, 31175.00\n", + "2023-07-14, Close, 31209.59\n", + "2023-07-14, Close, 31126.75\n", + "2023-07-14, Close, 31253.43\n", + "2023-07-14, Close, 31300.56\n", + "2023-07-14, BUY CREATE, 31300.56\n", + "2023-07-14, BUY EXECUTED, Price: 31300.57, Cost: 156502.85, Comm 0.00\n", + "2023-07-14, Close, 31240.48\n", + "2023-07-14, SELL CREATE, 31240.48\n", + "2023-07-14, SELL EXECUTED, Price: 31240.49, Cost: 156502.85, Comm 0.00\n", + "2023-07-14, OPERATION PROFIT, GROSS -300.40, NET -300.40\n", + "2023-07-14, Close, 31214.00\n", + "2023-07-14, Close, 30688.64\n", + "2023-07-14, Close, 30091.83\n", + "2023-07-14, Close, 30115.17\n", + "2023-07-14, Close, 30189.18\n", + "2023-07-14, Close, 30241.99\n", + "2023-07-14, Close, 30227.60\n", + "2023-07-14, Close, 30312.01\n", + "2023-07-15, Close, 30328.76\n", + "2023-07-15, Close, 30336.45\n", + "2023-07-15, Close, 30288.70\n", + "2023-07-15, Close, 30292.91\n", + "2023-07-15, Close, 30295.99\n", + "2023-07-15, Close, 30295.43\n", + "2023-07-15, Close, 30311.49\n", + "2023-07-15, Close, 30338.00\n", + "2023-07-15, BUY CREATE, 30338.00\n", + "2023-07-15, BUY EXECUTED, Price: 30338.00, Cost: 151690.00, Comm 0.00\n", + "2023-07-15, Close, 30316.19\n", + "2023-07-15, Close, 30350.06\n", + "2023-07-15, Close, 30325.43\n", + "2023-07-15, Close, 30311.99\n", + "2023-07-15, Close, 30351.10\n", + "2023-07-15, Close, 30324.99\n", + "2023-07-15, Close, 30284.48\n", + "2023-07-15, SELL CREATE, 30284.48\n", + "2023-07-15, SELL EXECUTED, Price: 30284.48, Cost: 151690.00, Comm 0.00\n", + "2023-07-15, OPERATION PROFIT, GROSS -267.60, NET -267.60\n", + "2023-07-15, Close, 30303.41\n", + "2023-07-15, Close, 30280.01\n", + "2023-07-15, Close, 30283.13\n", + "2023-07-15, Close, 30321.99\n", + "2023-07-15, BUY CREATE, 30321.99\n", + "2023-07-15, BUY EXECUTED, Price: 30321.99, Cost: 151609.95, Comm 0.00\n", + "2023-07-15, Close, 30326.47\n", + "2023-07-15, Close, 30302.01\n", + "2023-07-15, SELL CREATE, 30302.01\n", + "2023-07-15, SELL EXECUTED, Price: 30302.01, Cost: 151609.95, Comm 0.00\n", + "2023-07-15, OPERATION PROFIT, GROSS -99.90, NET -99.90\n", + "2023-07-15, Close, 30302.98\n", + "2023-07-15, Close, 30285.42\n", + "2023-07-15, Close, 30289.52\n", + "2023-07-16, Close, 30299.99\n", + "2023-07-16, Close, 30265.00\n", + "2023-07-16, Close, 30252.00\n", + "2023-07-16, Close, 30188.00\n", + "2023-07-16, Close, 30152.25\n", + "2023-07-16, Close, 30238.01\n", + "2023-07-16, Close, 30258.77\n", + "2023-07-16, Close, 30265.22\n", + "2023-07-16, Close, 30298.49\n", + "2023-07-16, BUY CREATE, 30298.49\n", + "2023-07-16, BUY EXECUTED, Price: 30298.50, Cost: 151492.50, Comm 0.00\n", + "2023-07-16, Close, 30303.13\n", + "2023-07-16, Close, 30290.00\n", + "2023-07-16, Close, 30306.01\n", + "2023-07-16, Close, 30293.97\n", + "2023-07-16, Close, 30303.93\n", + "2023-07-16, Close, 30401.99\n", + "2023-07-16, Close, 30379.95\n", + "2023-07-16, Close, 30364.17\n", + "2023-07-16, Close, 30381.92\n", + "2023-07-16, Close, 30276.87\n", + "2023-07-16, SELL CREATE, 30276.87\n", + "2023-07-16, SELL EXECUTED, Price: 30276.87, Cost: 151492.50, Comm 0.00\n", + "2023-07-16, OPERATION PROFIT, GROSS -108.15, NET -108.15\n", + "2023-07-16, Close, 30252.93\n", + "2023-07-16, Close, 30271.64\n", + "2023-07-16, Close, 30292.65\n", + "2023-07-16, Close, 30321.03\n", + "2023-07-16, BUY CREATE, 30321.03\n", + "2023-07-16, BUY EXECUTED, Price: 30321.02, Cost: 151605.10, Comm 0.00\n", + "2023-07-16, Close, 30231.99\n", + "2023-07-16, SELL CREATE, 30231.99\n", + "2023-07-17, SELL EXECUTED, Price: 30232.00, Cost: 151605.10, Comm 0.00\n", + "2023-07-17, OPERATION PROFIT, GROSS -445.10, NET -445.10\n", + "2023-07-17, Close, 30213.99\n", + "2023-07-17, Close, 30291.05\n", + "2023-07-17, Close, 30262.00\n", + "2023-07-17, Close, 30312.66\n", + "2023-07-17, BUY CREATE, 30312.66\n", + "2023-07-17, BUY EXECUTED, Price: 30312.66, Cost: 151563.30, Comm 0.00\n", + "2023-07-17, Close, 30296.44\n", + "2023-07-17, SELL CREATE, 30296.44\n", + "2023-07-17, SELL EXECUTED, Price: 30296.45, Cost: 151563.30, Comm 0.00\n", + "2023-07-17, OPERATION PROFIT, GROSS -81.05, NET -81.05\n", + "2023-07-17, Close, 30264.27\n", + "2023-07-17, Close, 30275.11\n", + "2023-07-17, Close, 30281.00\n", + "2023-07-17, Close, 30261.90\n", + "2023-07-17, Close, 30182.00\n", + "2023-07-17, Close, 30163.93\n", + "2023-07-17, Close, 30161.70\n", + "2023-07-17, Close, 30206.00\n", + "2023-07-17, Close, 30286.64\n", + "2023-07-17, BUY CREATE, 30286.64\n", + "2023-07-17, BUY EXECUTED, Price: 30286.65, Cost: 151433.25, Comm 0.00\n", + "2023-07-17, Close, 30274.80\n", + "2023-07-17, Close, 30174.83\n", + "2023-07-17, SELL CREATE, 30174.83\n", + "2023-07-17, SELL EXECUTED, Price: 30174.84, Cost: 151433.25, Comm 0.00\n", + "2023-07-17, OPERATION PROFIT, GROSS -559.05, NET -559.05\n", + "2023-07-17, Close, 30144.01\n", + "2023-07-17, Close, 30030.67\n", + "2023-07-17, Close, 29802.39\n", + "2023-07-17, Close, 29884.39\n", + "2023-07-17, Close, 29926.19\n", + "2023-07-17, Close, 30242.59\n", + "2023-07-17, BUY CREATE, 30242.59\n", + "2023-07-17, BUY EXECUTED, Price: 30242.60, Cost: 151213.00, Comm 0.00\n", + "2023-07-17, Close, 30106.74\n", + "2023-07-17, SELL CREATE, 30106.74\n", + "2023-07-17, SELL EXECUTED, Price: 30106.74, Cost: 151213.00, Comm 0.00\n", + "2023-07-17, OPERATION PROFIT, GROSS -679.30, NET -679.30\n", + "2023-07-17, Close, 30138.00\n", + "2023-07-17, BUY CREATE, 30138.00\n", + "2023-07-18, BUY EXECUTED, Price: 30138.01, Cost: 150690.05, Comm 0.00\n", + "2023-07-18, Close, 30168.01\n", + "2023-07-18, Close, 30215.84\n", + "2023-07-18, Close, 30120.00\n", + "2023-07-18, Close, 30073.96\n", + "2023-07-18, SELL CREATE, 30073.96\n", + "2023-07-18, SELL EXECUTED, Price: 30073.97, Cost: 150690.05, Comm 0.00\n", + "2023-07-18, OPERATION PROFIT, GROSS -320.20, NET -320.20\n", + "2023-07-18, Close, 30118.19\n", + "2023-07-18, BUY CREATE, 30118.19\n", + "2023-07-18, BUY EXECUTED, Price: 30118.19, Cost: 150590.95, Comm 0.00\n", + "2023-07-18, Close, 30052.22\n", + "2023-07-18, SELL CREATE, 30052.22\n", + "2023-07-18, SELL EXECUTED, Price: 30052.23, Cost: 150590.95, Comm 0.00\n", + "2023-07-18, OPERATION PROFIT, GROSS -329.80, NET -329.80\n", + "2023-07-18, Close, 29988.62\n", + "2023-07-18, Close, 29968.13\n", + "2023-07-18, Close, 30021.99\n", + "2023-07-18, Close, 29956.94\n", + "2023-07-18, Close, 29990.65\n", + "2023-07-18, Close, 29884.01\n", + "2023-07-18, Close, 29784.00\n", + "2023-07-18, Close, 29831.99\n", + "2023-07-18, Close, 29924.78\n", + "2023-07-18, Close, 29912.00\n", + "2023-07-18, Close, 29701.20\n", + "2023-07-18, Close, 29821.77\n", + "2023-07-18, Close, 29904.98\n", + "2023-07-18, Close, 29715.99\n", + "2023-07-18, Close, 29778.00\n", + "2023-07-18, Close, 29800.86\n", + "2023-07-18, Close, 29819.68\n", + "2023-07-18, Close, 29859.13\n", + "2023-07-18, BUY CREATE, 29859.13\n", + "2023-07-19, BUY EXECUTED, Price: 29859.14, Cost: 149295.70, Comm 0.00\n", + "2023-07-19, Close, 30055.32\n", + "2023-07-19, Close, 30006.01\n", + "2023-07-19, Close, 30024.00\n", + "2023-07-19, Close, 30059.11\n", + "2023-07-19, Close, 30099.08\n", + "2023-07-19, Close, 30098.39\n", + "2023-07-19, Close, 30044.59\n", + "2023-07-19, Close, 30000.68\n", + "2023-07-19, Close, 29923.28\n", + "2023-07-19, SELL CREATE, 29923.28\n", + "2023-07-19, SELL EXECUTED, Price: 29923.28, Cost: 149295.70, Comm 0.00\n", + "2023-07-19, OPERATION PROFIT, GROSS 320.70, NET 320.70\n", + "2023-07-19, Close, 30006.30\n", + "2023-07-19, BUY CREATE, 30006.30\n", + "2023-07-19, BUY EXECUTED, Price: 30006.29, Cost: 150031.45, Comm 0.00\n", + "2023-07-19, Close, 29988.00\n", + "2023-07-19, Close, 30012.63\n", + "2023-07-19, Close, 29950.01\n", + "2023-07-19, SELL CREATE, 29950.01\n", + "2023-07-19, SELL EXECUTED, Price: 29950.00, Cost: 150031.45, Comm 0.00\n", + "2023-07-19, OPERATION PROFIT, GROSS -281.45, NET -281.45\n", + "2023-07-19, Close, 29994.30\n", + "2023-07-19, Close, 29824.01\n", + "2023-07-19, Close, 29956.46\n", + "2023-07-19, Close, 29903.90\n", + "2023-07-19, Close, 29993.18\n", + "2023-07-19, BUY CREATE, 29993.18\n", + "2023-07-19, BUY EXECUTED, Price: 29993.19, Cost: 149965.95, Comm 0.00\n", + "2023-07-19, Close, 30078.00\n", + "2023-07-19, Close, 30044.31\n", + "2023-07-19, Close, 29964.95\n", + "2023-07-19, SELL CREATE, 29964.95\n", + "2023-07-19, SELL EXECUTED, Price: 29964.94, Cost: 149965.95, Comm 0.00\n", + "2023-07-19, OPERATION PROFIT, GROSS -141.25, NET -141.25\n", + "2023-07-19, Close, 29933.96\n", + "2023-07-19, Close, 29872.80\n", + "2023-07-19, Close, 29909.21\n", + "2023-07-20, Close, 30000.00\n", + "2023-07-20, BUY CREATE, 30000.00\n", + "2023-07-20, BUY EXECUTED, Price: 29999.99, Cost: 149999.95, Comm 0.00\n", + "2023-07-20, Close, 29987.33\n", + "2023-07-20, Close, 29985.53\n", + "2023-07-20, Close, 29948.01\n", + "2023-07-20, SELL CREATE, 29948.01\n", + "2023-07-20, SELL EXECUTED, Price: 29948.00, Cost: 149999.95, Comm 0.00\n", + "2023-07-20, OPERATION PROFIT, GROSS -259.95, NET -259.95\n", + "2023-07-20, Close, 29962.01\n", + "2023-07-20, BUY CREATE, 29962.01\n", + "2023-07-20, BUY EXECUTED, Price: 29962.01, Cost: 149810.05, Comm 0.00\n", + "2023-07-20, Close, 30125.99\n", + "2023-07-20, Close, 30120.00\n", + "2023-07-20, Close, 30202.77\n", + "2023-07-20, Close, 30264.55\n", + "2023-07-20, Close, 30327.99\n", + "2023-07-20, Close, 30295.00\n", + "2023-07-20, Close, 30284.90\n", + "2023-07-20, Close, 30221.53\n", + "2023-07-20, Close, 30229.58\n", + "2023-07-20, Close, 29782.19\n", + "2023-07-20, SELL CREATE, 29782.19\n", + "2023-07-20, SELL EXECUTED, Price: 29782.20, Cost: 149810.05, Comm 0.00\n", + "2023-07-20, OPERATION PROFIT, GROSS -899.05, NET -899.05\n", + "2023-07-20, Close, 29810.18\n", + "2023-07-20, Close, 29716.69\n", + "2023-07-20, Close, 29756.73\n", + "2023-07-20, Close, 29687.84\n", + "2023-07-20, Close, 29756.00\n", + "2023-07-20, Close, 29739.72\n", + "2023-07-20, Close, 29870.28\n", + "2023-07-20, Close, 29814.00\n", + "2023-07-20, Close, 29800.00\n", + "2023-07-21, Close, 29786.01\n", + "2023-07-21, Close, 29877.48\n", + "2023-07-21, BUY CREATE, 29877.48\n", + "2023-07-21, BUY EXECUTED, Price: 29877.49, Cost: 149387.45, Comm 0.00\n", + "2023-07-21, Close, 29903.19\n", + "2023-07-21, Close, 29897.62\n", + "2023-07-21, Close, 29864.00\n", + "2023-07-21, Close, 29817.99\n", + "2023-07-21, Close, 29856.48\n", + "2023-07-21, Close, 29766.81\n", + "2023-07-21, SELL CREATE, 29766.81\n", + "2023-07-21, SELL EXECUTED, Price: 29766.81, Cost: 149387.45, Comm 0.00\n", + "2023-07-21, OPERATION PROFIT, GROSS -553.40, NET -553.40\n", + "2023-07-21, Close, 29786.29\n", + "2023-07-21, Close, 29755.99\n", + "2023-07-21, Close, 29793.36\n", + "2023-07-21, Close, 29778.51\n", + "2023-07-21, Close, 29869.91\n", + "2023-07-21, BUY CREATE, 29869.91\n", + "2023-07-21, BUY EXECUTED, Price: 29869.90, Cost: 149349.50, Comm 0.00\n", + "2023-07-21, Close, 29813.99\n", + "2023-07-21, SELL CREATE, 29813.99\n", + "2023-07-21, SELL EXECUTED, Price: 29814.00, Cost: 149349.50, Comm 0.00\n", + "2023-07-21, OPERATION PROFIT, GROSS -279.50, NET -279.50\n", + "2023-07-21, Close, 29881.07\n", + "2023-07-21, BUY CREATE, 29881.07\n", + "2023-07-21, BUY EXECUTED, Price: 29881.07, Cost: 149405.35, Comm 0.00\n", + "2023-07-21, Close, 29866.00\n", + "2023-07-21, Close, 29828.00\n", + "2023-07-21, SELL CREATE, 29828.00\n", + "2023-07-21, SELL EXECUTED, Price: 29828.00, Cost: 149405.35, Comm 0.00\n", + "2023-07-21, OPERATION PROFIT, GROSS -265.35, NET -265.35\n", + "2023-07-21, Close, 29921.99\n", + "2023-07-21, BUY CREATE, 29921.99\n", + "2023-07-21, BUY EXECUTED, Price: 29922.00, Cost: 149610.00, Comm 0.00\n", + "2023-07-21, Close, 29981.69\n", + "2023-07-21, Close, 29875.99\n", + "2023-07-21, Close, 29880.00\n", + "2023-07-21, Close, 29899.57\n", + "2023-07-21, Close, 29925.06\n", + "2023-07-21, Close, 29901.72\n", + "2023-07-22, Close, 29983.79\n", + "2023-07-22, Close, 29924.01\n", + "2023-07-22, Close, 29935.48\n", + "2023-07-22, Close, 29903.41\n", + "2023-07-22, Close, 29884.00\n", + "2023-07-22, SELL CREATE, 29884.00\n", + "2023-07-22, SELL EXECUTED, Price: 29884.00, Cost: 149610.00, Comm 0.00\n", + "2023-07-22, OPERATION PROFIT, GROSS -190.00, NET -190.00\n", + "2023-07-22, Close, 29870.01\n", + "2023-07-22, Close, 29890.01\n", + "2023-07-22, Close, 29944.77\n", + "2023-07-22, BUY CREATE, 29944.77\n", + "2023-07-22, BUY EXECUTED, Price: 29944.78, Cost: 149723.90, Comm 0.00\n", + "2023-07-22, Close, 29937.29\n", + "2023-07-22, Close, 29929.48\n", + "2023-07-22, Close, 29902.08\n", + "2023-07-22, SELL CREATE, 29902.08\n", + "2023-07-22, SELL EXECUTED, Price: 29902.09, Cost: 149723.90, Comm 0.00\n", + "2023-07-22, OPERATION PROFIT, GROSS -213.45, NET -213.45\n", + "2023-07-22, Close, 29886.94\n", + "2023-07-22, Close, 29840.84\n", + "2023-07-22, Close, 29848.30\n", + "2023-07-22, Close, 29883.87\n", + "2023-07-22, Close, 29900.24\n", + "2023-07-22, BUY CREATE, 29900.24\n", + "2023-07-22, BUY EXECUTED, Price: 29900.23, Cost: 149501.15, Comm 0.00\n", + "2023-07-22, Close, 29899.99\n", + "2023-07-22, Close, 29837.35\n", + "2023-07-22, SELL CREATE, 29837.35\n", + "2023-07-22, SELL EXECUTED, Price: 29837.35, Cost: 149501.15, Comm 0.00\n", + "2023-07-22, OPERATION PROFIT, GROSS -314.40, NET -314.40\n", + "2023-07-22, Close, 29814.23\n", + "2023-07-22, Close, 29836.00\n", + "2023-07-22, Close, 29827.24\n", + "2023-07-22, Close, 29827.04\n", + "2023-07-22, Close, 29808.00\n", + "2023-07-22, Close, 29794.00\n", + "2023-07-23, Close, 29778.38\n", + "2023-07-23, Close, 29826.16\n", + "2023-07-23, Close, 29885.12\n", + "2023-07-23, BUY CREATE, 29885.12\n", + "2023-07-23, BUY EXECUTED, Price: 29885.12, Cost: 149425.60, Comm 0.00\n", + "2023-07-23, Close, 29845.72\n", + "2023-07-23, Close, 29905.22\n", + "2023-07-23, Close, 29921.99\n", + "2023-07-23, Close, 29919.41\n", + "2023-07-23, Close, 29916.00\n", + "2023-07-23, Close, 29948.01\n", + "2023-07-23, Close, 29900.18\n", + "2023-07-23, Close, 29887.59\n", + "2023-07-23, Close, 29888.58\n", + "2023-07-23, Close, 29919.70\n", + "2023-07-23, Close, 29888.36\n", + "2023-07-23, Close, 29894.82\n", + "2023-07-23, Close, 29897.64\n", + "2023-07-23, Close, 29954.12\n", + "2023-07-23, Close, 30118.49\n", + "2023-07-23, Close, 30248.01\n", + "2023-07-23, Close, 30093.12\n", + "2023-07-23, Close, 30143.49\n", + "2023-07-23, Close, 29955.24\n", + "2023-07-23, SELL CREATE, 29955.24\n", + "2023-07-23, SELL EXECUTED, Price: 29955.24, Cost: 149425.60, Comm 0.00\n", + "2023-07-23, OPERATION PROFIT, GROSS 350.60, NET 350.60\n", + "2023-07-23, Close, 30013.59\n", + "2023-07-23, BUY CREATE, 30013.59\n", + "2023-07-23, BUY EXECUTED, Price: 30013.60, Cost: 150068.00, Comm 0.00\n", + "2023-07-23, Close, 30083.75\n", + "2023-07-24, Close, 30010.01\n", + "2023-07-24, Close, 29915.99\n", + "2023-07-24, SELL CREATE, 29915.99\n", + "2023-07-24, SELL EXECUTED, Price: 29916.00, Cost: 150068.00, Comm 0.00\n", + "2023-07-24, OPERATION PROFIT, GROSS -488.00, NET -488.00\n", + "2023-07-24, Close, 29799.63\n", + "2023-07-24, Close, 29716.01\n", + "2023-07-24, Close, 29794.00\n", + "2023-07-24, Close, 29799.92\n", + "2023-07-24, Close, 29778.46\n", + "2023-07-24, Close, 29828.00\n", + "2023-07-24, Close, 29756.01\n", + "2023-07-24, Close, 29178.01\n", + "2023-07-24, Close, 29324.01\n", + "2023-07-24, Close, 29269.99\n", + "2023-07-24, Close, 29232.00\n", + "2023-07-24, Close, 29180.00\n", + "2023-07-24, Close, 29043.38\n", + "2023-07-24, Close, 29093.78\n", + "2023-07-24, Close, 29107.54\n", + "2023-07-24, Close, 29039.74\n", + "2023-07-24, Close, 29124.26\n", + "2023-07-24, Close, 29117.99\n", + "2023-07-24, Close, 29149.15\n", + "2023-07-24, Close, 29167.05\n", + "2023-07-24, Close, 29161.25\n", + "2023-07-24, Close, 29176.50\n", + "2023-07-24, BUY CREATE, 29176.50\n", + "2023-07-25, BUY EXECUTED, Price: 29176.50, Cost: 145882.50, Comm 0.00\n", + "2023-07-25, Close, 29112.86\n", + "2023-07-25, SELL CREATE, 29112.86\n", + "2023-07-25, SELL EXECUTED, Price: 29112.87, Cost: 145882.50, Comm 0.00\n", + "2023-07-25, OPERATION PROFIT, GROSS -318.15, NET -318.15\n", + "2023-07-25, Close, 29081.99\n", + "2023-07-25, Close, 29130.00\n", + "2023-07-25, BUY CREATE, 29130.00\n", + "2023-07-25, BUY EXECUTED, Price: 29130.00, Cost: 145650.00, Comm 0.00\n", + "2023-07-25, Close, 29111.00\n", + "2023-07-25, SELL CREATE, 29111.00\n", + "2023-07-25, SELL EXECUTED, Price: 29111.00, Cost: 145650.00, Comm 0.00\n", + "2023-07-25, OPERATION PROFIT, GROSS -95.00, NET -95.00\n", + "2023-07-25, Close, 29089.46\n", + "2023-07-25, Close, 29128.34\n", + "2023-07-25, BUY CREATE, 29128.34\n", + "2023-07-25, BUY EXECUTED, Price: 29128.35, Cost: 145641.75, Comm 0.00\n", + "2023-07-25, Close, 29144.67\n", + "2023-07-25, Close, 29142.46\n", + "2023-07-25, Close, 29191.43\n", + "2023-07-25, Close, 29167.31\n", + "2023-07-25, Close, 29164.99\n", + "2023-07-25, Close, 29128.29\n", + "2023-07-25, SELL CREATE, 29128.29\n", + "2023-07-25, SELL EXECUTED, Price: 29128.29, Cost: 145641.75, Comm 0.00\n", + "2023-07-25, OPERATION PROFIT, GROSS -0.30, NET -0.30\n", + "2023-07-25, Close, 29118.00\n", + "2023-07-25, Close, 29277.67\n", + "2023-07-25, BUY CREATE, 29277.67\n", + "2023-07-25, BUY EXECUTED, Price: 29277.67, Cost: 146388.35, Comm 0.00\n", + "2023-07-25, Close, 29177.50\n", + "2023-07-25, Close, 29181.51\n", + "2023-07-25, Close, 29228.79\n", + "2023-07-25, Close, 29275.99\n", + "2023-07-25, Close, 29264.01\n", + "2023-07-25, Close, 29198.83\n", + "2023-07-25, Close, 29229.85\n", + "2023-07-25, Close, 29228.93\n", + "2023-07-25, Close, 29206.46\n", + "2023-07-25, Close, 29228.91\n", + "2023-07-26, Close, 29166.76\n", + "2023-07-26, SELL CREATE, 29166.76\n", + "2023-07-26, SELL EXECUTED, Price: 29166.77, Cost: 146388.35, Comm 0.00\n", + "2023-07-26, OPERATION PROFIT, GROSS -554.50, NET -554.50\n", + "2023-07-26, Close, 29131.01\n", + "2023-07-26, Close, 29288.57\n", + "2023-07-26, BUY CREATE, 29288.57\n", + "2023-07-26, BUY EXECUTED, Price: 29288.57, Cost: 146442.85, Comm 0.00\n", + "2023-07-26, Close, 29242.81\n", + "2023-07-26, Close, 29201.19\n", + "2023-07-26, SELL CREATE, 29201.19\n", + "2023-07-26, SELL EXECUTED, Price: 29201.20, Cost: 146442.85, Comm 0.00\n", + "2023-07-26, OPERATION PROFIT, GROSS -436.85, NET -436.85\n", + "2023-07-26, Close, 29268.12\n", + "2023-07-26, BUY CREATE, 29268.12\n", + "2023-07-26, BUY EXECUTED, Price: 29268.12, Cost: 146340.60, Comm 0.00\n", + "2023-07-26, Close, 29209.99\n", + "2023-07-26, SELL CREATE, 29209.99\n", + "2023-07-26, SELL EXECUTED, Price: 29209.99, Cost: 146340.60, Comm 0.00\n", + "2023-07-26, OPERATION PROFIT, GROSS -290.65, NET -290.65\n", + "2023-07-26, Close, 29216.61\n", + "2023-07-26, Close, 29222.66\n", + "2023-07-26, BUY CREATE, 29222.66\n", + "2023-07-26, BUY EXECUTED, Price: 29222.66, Cost: 146113.30, Comm 0.00\n", + "2023-07-26, Close, 29192.45\n", + "2023-07-26, SELL CREATE, 29192.45\n", + "2023-07-26, SELL EXECUTED, Price: 29192.45, Cost: 146113.30, Comm 0.00\n", + "2023-07-26, OPERATION PROFIT, GROSS -151.05, NET -151.05\n", + "2023-07-26, Close, 29192.55\n", + "2023-07-26, Close, 29175.39\n", + "2023-07-26, Close, 29229.13\n", + "2023-07-26, BUY CREATE, 29229.13\n", + "2023-07-26, BUY EXECUTED, Price: 29229.13, Cost: 146145.65, Comm 0.00\n", + "2023-07-26, Close, 29306.54\n", + "2023-07-26, Close, 29267.54\n", + "2023-07-26, Close, 29324.00\n", + "2023-07-26, Close, 29302.43\n", + "2023-07-26, Close, 29268.90\n", + "2023-07-26, Close, 29377.50\n", + "2023-07-26, Close, 29401.93\n", + "2023-07-26, Close, 29578.09\n", + "2023-07-26, Close, 29466.00\n", + "2023-07-26, Close, 29476.01\n", + "2023-07-26, Close, 29351.96\n", + "2023-07-27, Close, 29356.09\n", + "2023-07-27, Close, 29399.99\n", + "2023-07-27, Close, 29437.81\n", + "2023-07-27, Close, 29405.78\n", + "2023-07-27, Close, 29488.36\n", + "2023-07-27, Close, 29460.00\n", + "2023-07-27, Close, 29384.01\n", + "2023-07-27, SELL CREATE, 29384.01\n", + "2023-07-27, SELL EXECUTED, Price: 29384.02, Cost: 146145.65, Comm 0.00\n", + "2023-07-27, OPERATION PROFIT, GROSS 774.45, NET 774.45\n", + "2023-07-27, Close, 29412.17\n", + "2023-07-27, Close, 29470.82\n", + "2023-07-27, BUY CREATE, 29470.82\n", + "2023-07-27, BUY EXECUTED, Price: 29470.83, Cost: 147354.15, Comm 0.00\n", + "2023-07-27, Close, 29544.02\n", + "2023-07-27, Close, 29479.50\n", + "2023-07-27, Close, 29507.03\n", + "2023-07-27, Close, 29496.41\n", + "2023-07-27, Close, 29446.02\n", + "2023-07-27, Close, 29350.00\n", + "2023-07-27, SELL CREATE, 29350.00\n", + "2023-07-27, SELL EXECUTED, Price: 29350.00, Cost: 147354.15, Comm 0.00\n", + "2023-07-27, OPERATION PROFIT, GROSS -604.15, NET -604.15\n", + "2023-07-27, Close, 29292.01\n", + "2023-07-27, Close, 29274.93\n", + "2023-07-27, Close, 29220.00\n", + "2023-07-27, Close, 29141.37\n", + "2023-07-27, Close, 29163.83\n", + "2023-07-27, Close, 29144.56\n", + "2023-07-27, Close, 29187.15\n", + "2023-07-27, Close, 29202.29\n", + "2023-07-27, Close, 29222.78\n", + "2023-07-28, Close, 29273.00\n", + "2023-07-28, Close, 29260.75\n", + "2023-07-28, Close, 29229.99\n", + "2023-07-28, Close, 29253.85\n", + "2023-07-28, BUY CREATE, 29253.85\n", + "2023-07-28, BUY EXECUTED, Price: 29253.84, Cost: 146269.20, Comm 0.00\n", + "2023-07-28, Close, 29260.00\n", + "2023-07-28, Close, 29185.99\n", + "2023-07-28, SELL CREATE, 29185.99\n", + "2023-07-28, SELL EXECUTED, Price: 29186.00, Cost: 146269.20, Comm 0.00\n", + "2023-07-28, OPERATION PROFIT, GROSS -339.20, NET -339.20\n", + "2023-07-28, Close, 29190.01\n", + "2023-07-28, Close, 29140.80\n", + "2023-07-28, Close, 29152.00\n", + "Final Portfolio Value: 148842.05\n", + "Sharpe Ratio: None\n", + "Max Drawdown: 11.918778789944406%\n", + "Total Trades: 220\n", + "Winning Trades: 56\n", + "Losing Trades: 164\n", + "Total Return: 0.39771549057473327\n" + ] + } + ], + "source": [ + "if __name__ == '__main__':\n", + " cerebro = bt.Cerebro()\n", + " cerebro.addstrategy(TestStrategy)\n", + " data = bt.feeds.GenericCSVData(\n", + " dataname=csv_path,\n", + " dtformat=('%Y-%m-%d %H:%M:%S'),\n", + " datetime=0,\n", + " open=1,\n", + " high=2,\n", + " low=3,\n", + " close=4,\n", + " volume=5,\n", + " openinterest=-1,\n", + " timeframe=bt.TimeFrame.Minutes,\n", + " compression=60\n", + " )\n", + " cerebro.adddata(data)\n", + " cerebro.broker.setcash(100000.0)\n", + " cerebro.addsizer(bt.sizers.FixedSize, stake=5)\n", + " cerebro.broker.setcommission(commission=0.0)\n", + "\n", + " # Add analyzers for performance metrics\n", + " cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name='sharpe')\n", + " cerebro.addanalyzer(bt.analyzers.DrawDown, _name='drawdown')\n", + " cerebro.addanalyzer(bt.analyzers.TradeAnalyzer, _name='trades')\n", + " cerebro.addanalyzer(bt.analyzers.Returns, _name='returns')\n", + "\n", + " print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue())\n", + "\n", + " results = cerebro.run()\n", + "\n", + " print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue())\n", + "\n", + " # Extract and print analyzers results\n", + " strat = results[0]\n", + "\n", + " # Sharpe Ratio\n", + " sharpe_ratio = strat.analyzers.sharpe.get_analysis()\n", + " print(f'Sharpe Ratio: {sharpe_ratio[\"sharperatio\"]}')\n", + "\n", + " # Drawdown\n", + " drawdown = strat.analyzers.drawdown.get_analysis()\n", + " print(f'Max Drawdown: {drawdown[\"max\"][\"drawdown\"]}%')\n", + "\n", + " # Trade Analyzer\n", + " trades = strat.analyzers.trades.get_analysis()\n", + " print(f'Total Trades: {trades[\"total\"][\"total\"]}')\n", + " print(f'Winning Trades: {trades[\"won\"][\"total\"]}')\n", + " print(f'Losing Trades: {trades[\"lost\"][\"total\"]}')\n", + "\n", + " # Returns\n", + " returns = strat.analyzers.returns.get_analysis()\n", + " print(f'Total Return: {returns[\"rtot\"]}')\n", + "\n", + " # Plot settings\n", + " plt.rcParams['figure.figsize'] = [15, 12]\n", + " plt.rcParams.update({'font.size': 12})\n", + " cerebro.plot(iplot=False)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Strategy and Indicators\n", + "### Strategy:\n", + "- The strategy implemented is based on a Simple Moving Average (SMA) crossover:\n", + "\n", + " - Buy Condition: The strategy attempts to buy when the closing price of the asset is above the SMA (15-period).\n", + " - Sell Condition: The strategy attempts to sell when the closing price of the asset is below the SMA (15-period).\n", + "\n", + "### Indicators: \n", + "\n", + "- Simple Moving Average (SMA): A 15-period SMA is used to determine the buy/sell signals.\n", + "- Additional indicators are included for plotting and analysis but are not used in the buy/sell decision logic:\n", + " - Exponential Moving Average (EMA): 25-period.\n", + " - Weighted Moving Average (WMA): 25-period.\n", + " - Stochastic Slow: Stochastic indicator to measure momentum.\n", + " - MACD Histogram: Moving Average Convergence Divergence for trend-following.\n", + " - Relative Strength Index (RSI): To measure the speed and change of price movements.\n", + " - ATR (Average True Range): Measures volatility." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cryptocurrency Trading Backtesting\n", + "This notebook demonstrates the process of backtesting a cryptocurrency trading strategy using historical data. We will use the RSI and Bollinger Bands strategy to trade Bitcoin (BTC) against Tether (USDT)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['c:\\\\Users\\\\dell\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python312\\\\python312.zip', 'c:\\\\Users\\\\dell\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python312\\\\DLLs', 'c:\\\\Users\\\\dell\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python312\\\\Lib', 'c:\\\\Users\\\\dell\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python312', '', 'c:\\\\Users\\\\dell\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python312\\\\Lib\\\\site-packages', 'c:\\\\Users\\\\dell\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python312\\\\Lib\\\\site-packages\\\\win32', 'c:\\\\Users\\\\dell\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python312\\\\Lib\\\\site-packages\\\\win32\\\\lib', 'c:\\\\Users\\\\dell\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python312\\\\Lib\\\\site-packages\\\\Pythonwin', 'c:\\\\Users\\\\dell\\\\Desktop\\\\10Academy', 'c:\\\\Users\\\\dell\\\\Desktop\\\\10Academy', 'c:\\\\Users\\\\dell\\\\Desktop\\\\10Academy', 'c:\\\\Users\\\\dell\\\\Desktop\\\\10Academy', 'c:\\\\Users\\\\dell\\\\Desktop\\\\10Academy\\\\crypto-trading-backtesting']\n" + ] + } + ], + "source": [ + "import os\n", + "import sys\n", + "import pandas as pd\n", + "from sqlalchemy import create_engine\n", + "import backtrader as bt\n", + "root_path = os.path.abspath(os.path.join(os.getcwd(), '..'))\n", + "sys.path.append(root_path)\n", + "print(sys.path)\n", + "\n", + "\n", + "from scripts.backtest_runner import fetch_data, RsiBollingerBandsStrategy, run_backtest\n", + "\n", + "rds_host = os.getenv('PG_HOST')\n", + "rds_port = os.getenv('PG_PORT')\n", + "rds_db = os.getenv('PG_DATABASE')\n", + "rds_user = os.getenv('PG_USER')\n", + "rds_password = os.getenv('PG_PASSWORD')\n", + "\n", + "engine = create_engine(f'postgresql+psycopg2://{rds_user}:{rds_password}@{rds_host}:{rds_port}/{rds_db}')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "symbol = 'BTC/USDT'\n", + "start_date = '2023-06-20'\n", + "end_date = '2024-06-20'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Run backtest" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Executing query:\n", + "\n", + " SELECT timestamp AS date, open AS open, high AS high, low AS low, close AS close, volume AS volume \n", + " FROM public.\"ohlcv_BTC_USDT\"\n", + " WHERE timestamp >= '2023-06-20' AND timestamp <= '2024-06-20';\n", + " \n", + "\n", + "Fetched data:\n", + " date open high low close volume\n", + "0 2023-06-20 26844.35 28402.74 26652.00 28307.99 69666.95525\n", + "1 2023-06-21 28308.00 30800.00 28257.99 29993.89 108926.40412\n", + "2 2023-06-22 29993.89 30500.00 29525.61 29884.92 59054.56460\n", + "3 2023-06-23 29884.92 31431.94 29800.00 30688.50 73931.89635\n", + "4 2023-06-24 30688.51 30800.00 30250.00 30527.43 30513.30135\n", + "\n", + "Starting Portfolio Value: 10000.00\n", + "Ending Portfolio Value: 10000.00\n" + ] + }, + { + "data": { + "application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.get_websocket_type = function () {\n if (typeof WebSocket !== 'undefined') {\n return WebSocket;\n } else if (typeof MozWebSocket !== 'undefined') {\n return MozWebSocket;\n } else {\n alert(\n 'Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.'\n );\n }\n};\n\nmpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = this.ws.binaryType !== undefined;\n\n if (!this.supports_binary) {\n var warnings = document.getElementById('mpl-warnings');\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent =\n 'This browser does not support binary websocket messages. ' +\n 'Performance may be slow.';\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = document.createElement('div');\n this.root.setAttribute('style', 'display: inline-block');\n this._root_extra_style(this.root);\n\n parent_element.appendChild(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message('supports_binary', { value: fig.supports_binary });\n fig.send_message('send_image_mode', {});\n if (fig.ratio !== 1) {\n fig.send_message('set_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\n }\n fig.send_message('refresh', {});\n };\n\n this.imageObj.onload = function () {\n if (fig.image_mode === 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function () {\n fig.ws.close();\n };\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n};\n\nmpl.figure.prototype._init_header = function () {\n var titlebar = document.createElement('div');\n titlebar.classList =\n 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n var titletext = document.createElement('div');\n titletext.classList = 'ui-dialog-title';\n titletext.setAttribute(\n 'style',\n 'width: 100%; text-align: center; padding: 3px;'\n );\n titlebar.appendChild(titletext);\n this.root.appendChild(titlebar);\n this.header = titletext;\n};\n\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._init_canvas = function () {\n var fig = this;\n\n var canvas_div = (this.canvas_div = document.createElement('div'));\n canvas_div.setAttribute('tabindex', '0');\n canvas_div.setAttribute(\n 'style',\n 'border: 1px solid #ddd;' +\n 'box-sizing: content-box;' +\n 'clear: both;' +\n 'min-height: 1px;' +\n 'min-width: 1px;' +\n 'outline: 0;' +\n 'overflow: hidden;' +\n 'position: relative;' +\n 'resize: both;' +\n 'z-index: 2;'\n );\n\n function on_keyboard_event_closure(name) {\n return function (event) {\n return fig.key_event(event, name);\n };\n }\n\n canvas_div.addEventListener(\n 'keydown',\n on_keyboard_event_closure('key_press')\n );\n canvas_div.addEventListener(\n 'keyup',\n on_keyboard_event_closure('key_release')\n );\n\n this._canvas_extra_style(canvas_div);\n this.root.appendChild(canvas_div);\n\n var canvas = (this.canvas = document.createElement('canvas'));\n canvas.classList.add('mpl-canvas');\n canvas.setAttribute(\n 'style',\n 'box-sizing: content-box;' +\n 'pointer-events: none;' +\n 'position: relative;' +\n 'z-index: 0;'\n );\n\n this.context = canvas.getContext('2d');\n\n var backingStore =\n this.context.backingStorePixelRatio ||\n this.context.webkitBackingStorePixelRatio ||\n this.context.mozBackingStorePixelRatio ||\n this.context.msBackingStorePixelRatio ||\n this.context.oBackingStorePixelRatio ||\n this.context.backingStorePixelRatio ||\n 1;\n\n this.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n 'canvas'\n ));\n rubberband_canvas.setAttribute(\n 'style',\n 'box-sizing: content-box;' +\n 'left: 0;' +\n 'pointer-events: none;' +\n 'position: absolute;' +\n 'top: 0;' +\n 'z-index: 1;'\n );\n\n // Apply a ponyfill if ResizeObserver is not implemented by browser.\n if (this.ResizeObserver === undefined) {\n if (window.ResizeObserver !== undefined) {\n this.ResizeObserver = window.ResizeObserver;\n } else {\n var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n this.ResizeObserver = obs.ResizeObserver;\n }\n }\n\n this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n var nentries = entries.length;\n for (var i = 0; i < nentries; i++) {\n var entry = entries[i];\n var width, height;\n if (entry.contentBoxSize) {\n if (entry.contentBoxSize instanceof Array) {\n // Chrome 84 implements new version of spec.\n width = entry.contentBoxSize[0].inlineSize;\n height = entry.contentBoxSize[0].blockSize;\n } else {\n // Firefox implements old version of spec.\n width = entry.contentBoxSize.inlineSize;\n height = entry.contentBoxSize.blockSize;\n }\n } else {\n // Chrome <84 implements even older version of spec.\n width = entry.contentRect.width;\n height = entry.contentRect.height;\n }\n\n // Keep the size of the canvas and rubber band canvas in sync with\n // the canvas container.\n if (entry.devicePixelContentBoxSize) {\n // Chrome 84 implements new version of spec.\n canvas.setAttribute(\n 'width',\n entry.devicePixelContentBoxSize[0].inlineSize\n );\n canvas.setAttribute(\n 'height',\n entry.devicePixelContentBoxSize[0].blockSize\n );\n } else {\n canvas.setAttribute('width', width * fig.ratio);\n canvas.setAttribute('height', height * fig.ratio);\n }\n /* This rescales the canvas back to display pixels, so that it\n * appears correct on HiDPI screens. */\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n\n rubberband_canvas.setAttribute('width', width);\n rubberband_canvas.setAttribute('height', height);\n\n // And update the size in Python. We ignore the initial 0/0 size\n // that occurs as the element is placed into the DOM, which should\n // otherwise not happen due to the minimum size styling.\n if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n fig.request_resize(width, height);\n }\n }\n });\n this.resizeObserverInstance.observe(canvas_div);\n\n function on_mouse_event_closure(name) {\n /* User Agent sniffing is bad, but WebKit is busted:\n * https://bugs.webkit.org/show_bug.cgi?id=144526\n * https://bugs.webkit.org/show_bug.cgi?id=181818\n * The worst that happens here is that they get an extra browser\n * selection when dragging, if this check fails to catch them.\n */\n var UA = navigator.userAgent;\n var isWebKit = /AppleWebKit/.test(UA) && !/Chrome/.test(UA);\n if(isWebKit) {\n return function (event) {\n /* This prevents the web browser from automatically changing to\n * the text insertion cursor when the button is pressed. We\n * want to control all of the cursor setting manually through\n * the 'cursor' event from matplotlib */\n event.preventDefault()\n return fig.mouse_event(event, name);\n };\n } else {\n return function (event) {\n return fig.mouse_event(event, name);\n };\n }\n }\n\n canvas_div.addEventListener(\n 'mousedown',\n on_mouse_event_closure('button_press')\n );\n canvas_div.addEventListener(\n 'mouseup',\n on_mouse_event_closure('button_release')\n );\n canvas_div.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\n );\n // Throttle sequential mouse events to 1 every 20ms.\n canvas_div.addEventListener(\n 'mousemove',\n on_mouse_event_closure('motion_notify')\n );\n\n canvas_div.addEventListener(\n 'mouseenter',\n on_mouse_event_closure('figure_enter')\n );\n canvas_div.addEventListener(\n 'mouseleave',\n on_mouse_event_closure('figure_leave')\n );\n\n canvas_div.addEventListener('wheel', function (event) {\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n on_mouse_event_closure('scroll')(event);\n });\n\n canvas_div.appendChild(canvas);\n canvas_div.appendChild(rubberband_canvas);\n\n this.rubberband_context = rubberband_canvas.getContext('2d');\n this.rubberband_context.strokeStyle = '#000000';\n\n this._resize_canvas = function (width, height, forward) {\n if (forward) {\n canvas_div.style.width = width + 'px';\n canvas_div.style.height = height + 'px';\n }\n };\n\n // Disable right mouse context menu.\n canvas_div.addEventListener('contextmenu', function (_e) {\n event.preventDefault();\n return false;\n });\n\n function set_focus() {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n};\n\nmpl.figure.prototype._init_toolbar = function () {\n var fig = this;\n\n var toolbar = document.createElement('div');\n toolbar.classList = 'mpl-toolbar';\n this.root.appendChild(toolbar);\n\n function on_click_closure(name) {\n return function (_event) {\n return fig.toolbar_button_onclick(name);\n };\n }\n\n function on_mouseover_closure(tooltip) {\n return function (event) {\n if (!event.currentTarget.disabled) {\n return fig.toolbar_button_onmouseover(tooltip);\n }\n };\n }\n\n fig.buttons = {};\n var buttonGroup = document.createElement('div');\n buttonGroup.classList = 'mpl-button-group';\n for (var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n /* Instead of a spacer, we start a new button group. */\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n buttonGroup = document.createElement('div');\n buttonGroup.classList = 'mpl-button-group';\n continue;\n }\n\n var button = (fig.buttons[name] = document.createElement('button'));\n button.classList = 'mpl-widget';\n button.setAttribute('role', 'button');\n button.setAttribute('aria-disabled', 'false');\n button.addEventListener('click', on_click_closure(method_name));\n button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n\n var icon_img = document.createElement('img');\n icon_img.src = '_images/' + image + '.png';\n icon_img.srcset = '_images/' + image + '_large.png 2x';\n icon_img.alt = tooltip;\n button.appendChild(icon_img);\n\n buttonGroup.appendChild(button);\n }\n\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n\n var fmt_picker = document.createElement('select');\n fmt_picker.classList = 'mpl-widget';\n toolbar.appendChild(fmt_picker);\n this.format_dropdown = fmt_picker;\n\n for (var ind in mpl.extensions) {\n var fmt = mpl.extensions[ind];\n var option = document.createElement('option');\n option.selected = fmt === mpl.default_extension;\n option.innerHTML = fmt;\n fmt_picker.appendChild(option);\n }\n\n var status_bar = document.createElement('span');\n status_bar.classList = 'mpl-message';\n toolbar.appendChild(status_bar);\n this.message = status_bar;\n};\n\nmpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n // which will in turn request a refresh of the image.\n this.send_message('resize', { width: x_pixels, height: y_pixels });\n};\n\nmpl.figure.prototype.send_message = function (type, properties) {\n properties['type'] = type;\n properties['figure_id'] = this.id;\n this.ws.send(JSON.stringify(properties));\n};\n\nmpl.figure.prototype.send_draw_message = function () {\n if (!this.waiting) {\n this.waiting = true;\n this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n }\n};\n\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n var format_dropdown = fig.format_dropdown;\n var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n fig.ondownload(fig, format);\n};\n\nmpl.figure.prototype.handle_resize = function (fig, msg) {\n var size = msg['size'];\n if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n fig._resize_canvas(size[0], size[1], msg['forward']);\n fig.send_message('refresh', {});\n }\n};\n\nmpl.figure.prototype.handle_rubberband = function (fig, msg) {\n var x0 = msg['x0'] / fig.ratio;\n var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n var x1 = msg['x1'] / fig.ratio;\n var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n x0 = Math.floor(x0) + 0.5;\n y0 = Math.floor(y0) + 0.5;\n x1 = Math.floor(x1) + 0.5;\n y1 = Math.floor(y1) + 0.5;\n var min_x = Math.min(x0, x1);\n var min_y = Math.min(y0, y1);\n var width = Math.abs(x1 - x0);\n var height = Math.abs(y1 - y0);\n\n fig.rubberband_context.clearRect(\n 0,\n 0,\n fig.canvas.width / fig.ratio,\n fig.canvas.height / fig.ratio\n );\n\n fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n};\n\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.canvas_div.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n for (var key in msg) {\n if (!(key in fig.buttons)) {\n continue;\n }\n fig.buttons[key].disabled = !msg[key];\n fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n }\n};\n\nmpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n if (msg['mode'] === 'PAN') {\n fig.buttons['Pan'].classList.add('active');\n fig.buttons['Zoom'].classList.remove('active');\n } else if (msg['mode'] === 'ZOOM') {\n fig.buttons['Pan'].classList.remove('active');\n fig.buttons['Zoom'].classList.add('active');\n } else {\n fig.buttons['Pan'].classList.remove('active');\n fig.buttons['Zoom'].classList.remove('active');\n }\n};\n\nmpl.figure.prototype.updated_canvas_event = function () {\n // Called whenever the canvas gets updated.\n this.send_message('ack', {});\n};\n\n// A function to construct a web socket function for onmessage handling.\n// Called in the figure constructor.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\n /* FIXME: We get \"Resource interpreted as Image but\n * transferred with MIME type text/plain:\" errors on\n * Chrome. But how to set the MIME type? It doesn't seem\n * to be part of the websocket stream */\n img.type = 'image/png';\n }\n\n /* Free the memory for the previous frames */\n if (fig.imageObj.src) {\n (window.URL || window.webkitURL).revokeObjectURL(\n fig.imageObj.src\n );\n }\n\n fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n img\n );\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n } else if (\n typeof evt.data === 'string' &&\n evt.data.slice(0, 21) === 'data:image/png;base64'\n ) {\n fig.imageObj.src = evt.data;\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n }\n\n var msg = JSON.parse(evt.data);\n var msg_type = msg['type'];\n\n // Call the \"handle_{type}\" callback, which takes\n // the figure and JSON message as its only arguments.\n try {\n var callback = fig['handle_' + msg_type];\n } catch (e) {\n console.log(\n \"No handler for the '\" + msg_type + \"' message type: \",\n msg\n );\n return;\n }\n\n if (callback) {\n try {\n // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n callback(fig, msg);\n } catch (e) {\n console.log(\n \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n e,\n e.stack,\n msg\n );\n }\n }\n };\n};\n\nfunction getModifiers(event) {\n var mods = [];\n if (event.ctrlKey) {\n mods.push('ctrl');\n }\n if (event.altKey) {\n mods.push('alt');\n }\n if (event.shiftKey) {\n mods.push('shift');\n }\n if (event.metaKey) {\n mods.push('meta');\n }\n return mods;\n}\n\n/*\n * return a copy of an object with only non-object keys\n * we need this to avoid circular references\n * https://stackoverflow.com/a/24161582/3208463\n */\nfunction simpleKeys(original) {\n return Object.keys(original).reduce(function (obj, key) {\n if (typeof original[key] !== 'object') {\n obj[key] = original[key];\n }\n return obj;\n }, {});\n}\n\nmpl.figure.prototype.mouse_event = function (event, name) {\n if (name === 'button_press') {\n this.canvas.focus();\n this.canvas_div.focus();\n }\n\n // from https://stackoverflow.com/q/1114465\n var boundingRect = this.canvas.getBoundingClientRect();\n var x = (event.clientX - boundingRect.left) * this.ratio;\n var y = (event.clientY - boundingRect.top) * this.ratio;\n\n this.send_message(name, {\n x: x,\n y: y,\n button: event.button,\n step: event.step,\n modifiers: getModifiers(event),\n guiEvent: simpleKeys(event),\n });\n\n return false;\n};\n\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.figure.prototype.toolbar_button_onclick = function (name) {\n if (name === 'download') {\n this.handle_save(this, null);\n } else {\n this.send_message('toolbar_button', { name: name });\n }\n};\n\nmpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n this.message.textContent = tooltip;\n};\n\n///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n// prettier-ignore\nvar _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\nmpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\", \"webp\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar comm_websocket_adapter = function (comm) {\n // Create a \"websocket\"-like object which calls the given IPython comm\n // object with the appropriate methods. Currently this is a non binary\n // socket, so there is still some room for performance tuning.\n var ws = {};\n\n ws.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\n\n ws.close = function () {\n comm.close();\n };\n ws.send = function (m) {\n //console.log('sending', m);\n comm.send(m);\n };\n // Register the callback with on_msg.\n comm.on_msg(function (msg) {\n //console.log('receiving', msg['content']['data'], msg);\n var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.mpl_figure_comm = function (comm, msg) {\n // This is the function which gets called when the mpl process\n // starts-up an IPython Comm through the \"matplotlib\" channel.\n\n var id = msg.content.data.id;\n // Get hold of the div created by the display call when the Comm\n // socket was opened in Python.\n var element = document.getElementById(id);\n var ws_proxy = comm_websocket_adapter(comm);\n\n function ondownload(figure, _format) {\n window.open(figure.canvas.toDataURL());\n }\n\n var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n\n // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n // web socket which is closed, not our websocket->open comm proxy.\n ws_proxy.onopen();\n\n fig.parent_element = element;\n fig.cell_info = mpl.find_output_cell(\"
\");\n if (!fig.cell_info) {\n console.error('Failed to find cell for figure', id, fig);\n return;\n }\n fig.cell_info[0].output_area.element.on(\n 'cleared',\n { fig: fig },\n fig._remove_fig_handler\n );\n};\n\nmpl.figure.prototype.handle_close = function (fig, msg) {\n var width = fig.canvas.width / fig.ratio;\n fig.cell_info[0].output_area.element.off(\n 'cleared',\n fig._remove_fig_handler\n );\n fig.resizeObserverInstance.unobserve(fig.canvas_div);\n\n // Update the output cell to use the data from the current canvas.\n fig.push_to_output();\n var dataURL = fig.canvas.toDataURL();\n // Re-enable the keyboard manager in IPython - without this line, in FF,\n // the notebook keyboard shortcuts fail.\n IPython.keyboard_manager.enable();\n fig.parent_element.innerHTML =\n '';\n fig.close_ws(fig, msg);\n};\n\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.figure.prototype.push_to_output = function (_remove_interactive) {\n // Turn the data on the canvas into data in the output cell.\n var width = this.canvas.width / this.ratio;\n var dataURL = this.canvas.toDataURL();\n this.cell_info[1]['text/html'] =\n '';\n};\n\nmpl.figure.prototype.updated_canvas_event = function () {\n // Tell IPython that the notebook contents must change.\n IPython.notebook.set_dirty(true);\n this.send_message('ack', {});\n var fig = this;\n // Wait a second, then push the new image to the DOM so\n // that it is saved nicely (might be nice to debounce this).\n setTimeout(function () {\n fig.push_to_output();\n }, 1000);\n};\n\nmpl.figure.prototype._init_toolbar = function () {\n var fig = this;\n\n var toolbar = document.createElement('div');\n toolbar.classList = 'btn-toolbar';\n this.root.appendChild(toolbar);\n\n function on_click_closure(name) {\n return function (_event) {\n return fig.toolbar_button_onclick(name);\n };\n }\n\n function on_mouseover_closure(tooltip) {\n return function (event) {\n if (!event.currentTarget.disabled) {\n return fig.toolbar_button_onmouseover(tooltip);\n }\n };\n }\n\n fig.buttons = {};\n var buttonGroup = document.createElement('div');\n buttonGroup.classList = 'btn-group';\n var button;\n for (var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n /* Instead of a spacer, we start a new button group. */\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n buttonGroup = document.createElement('div');\n buttonGroup.classList = 'btn-group';\n continue;\n }\n\n button = fig.buttons[name] = document.createElement('button');\n button.classList = 'btn btn-default';\n button.href = '#';\n button.title = name;\n button.innerHTML = '';\n button.addEventListener('click', on_click_closure(method_name));\n button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n buttonGroup.appendChild(button);\n }\n\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n\n // Add the status bar.\n var status_bar = document.createElement('span');\n status_bar.classList = 'mpl-message pull-right';\n toolbar.appendChild(status_bar);\n this.message = status_bar;\n\n // Add the close button to the window.\n var buttongrp = document.createElement('div');\n buttongrp.classList = 'btn-group inline pull-right';\n button = document.createElement('button');\n button.classList = 'btn btn-mini btn-primary';\n button.href = '#';\n button.title = 'Stop Interaction';\n button.innerHTML = '';\n button.addEventListener('click', function (_evt) {\n fig.handle_close(fig, {});\n });\n button.addEventListener(\n 'mouseover',\n on_mouseover_closure('Stop Interaction')\n );\n buttongrp.appendChild(button);\n var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n titlebar.insertBefore(buttongrp, titlebar.firstChild);\n};\n\nmpl.figure.prototype._remove_fig_handler = function (event) {\n var fig = event.data.fig;\n if (event.target !== this) {\n // Ignore bubbled events from children.\n return;\n }\n fig.close_ws(fig, {});\n};\n\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.figure.prototype._canvas_extra_style = function (el) {\n // this is important to make the div 'focusable\n el.setAttribute('tabindex', 0);\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n } else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n};\n\nmpl.figure.prototype._key_event_extra = function (event, _name) {\n // Check for shift+enter\n if (event.shiftKey && event.which === 13) {\n this.canvas_div.blur();\n // select the cell after this one\n var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n IPython.notebook.select(index + 1);\n }\n};\n\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.find_output_cell = function (html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i = 0; i < ncells; i++) {\n var cell = cells[i];\n if (cell.cell_type === 'code') {\n for (var j = 0; j < cell.output_area.outputs.length; j++) {\n var data = cell.output_area.outputs[j];\n if (data.data) {\n // IPython >= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] === html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n};\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "None\n" + ] + } + ], + "source": [ + "result = run_backtest(RsiBollingerBandsStrategy, symbol, start_date, end_date)\n", + "print(result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fetch data and display first few rows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Executing query:\n", + "\n", + " SELECT timestamp AS date, open AS open, high AS high, low AS low, close AS close, volume AS volume \n", + " FROM public.\"ohlcv_BTC_USDT\"\n", + " WHERE timestamp >= '2023-06-20' AND timestamp <= '2024-06-20';\n", + " \n", + "\n", + "Fetched data:\n", + " date open high low close volume\n", + "0 2023-06-20 26844.35 28402.74 26652.00 28307.99 69666.95525\n", + "1 2023-06-21 28308.00 30800.00 28257.99 29993.89 108926.40412\n", + "2 2023-06-22 29993.89 30500.00 29525.61 29884.92 59054.56460\n", + "3 2023-06-23 29884.92 31431.94 29800.00 30688.50 73931.89635\n", + "4 2023-06-24 30688.51 30800.00 30250.00 30527.43 30513.30135\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolume
date
2023-06-2026844.3528402.7426652.0028307.9969666.95525
2023-06-2128308.0030800.0028257.9929993.89108926.40412
2023-06-2229993.8930500.0029525.6129884.9259054.56460
2023-06-2329884.9231431.9429800.0030688.5073931.89635
2023-06-2430688.5130800.0030250.0030527.4330513.30135
\n", + "
" + ], + "text/plain": [ + " Open High Low Close Volume\n", + "date \n", + "2023-06-20 26844.35 28402.74 26652.00 28307.99 69666.95525\n", + "2023-06-21 28308.00 30800.00 28257.99 29993.89 108926.40412\n", + "2023-06-22 29993.89 30500.00 29525.61 29884.92 59054.56460\n", + "2023-06-23 29884.92 31431.94 29800.00 30688.50 73931.89635\n", + "2023-06-24 30688.51 30800.00 30250.00 30527.43 30513.30135" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "data = fetch_data(symbol, start_date, end_date)\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting the Historical Data\n", + "Let's visualize the historical price data to understand the market trends." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.get_websocket_type = function () {\n if (typeof WebSocket !== 'undefined') {\n return WebSocket;\n } else if (typeof MozWebSocket !== 'undefined') {\n return MozWebSocket;\n } else {\n alert(\n 'Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.'\n );\n }\n};\n\nmpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = this.ws.binaryType !== undefined;\n\n if (!this.supports_binary) {\n var warnings = document.getElementById('mpl-warnings');\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent =\n 'This browser does not support binary websocket messages. ' +\n 'Performance may be slow.';\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = document.createElement('div');\n this.root.setAttribute('style', 'display: inline-block');\n this._root_extra_style(this.root);\n\n parent_element.appendChild(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message('supports_binary', { value: fig.supports_binary });\n fig.send_message('send_image_mode', {});\n if (fig.ratio !== 1) {\n fig.send_message('set_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\n }\n fig.send_message('refresh', {});\n };\n\n this.imageObj.onload = function () {\n if (fig.image_mode === 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function () {\n fig.ws.close();\n };\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n};\n\nmpl.figure.prototype._init_header = function () {\n var titlebar = document.createElement('div');\n titlebar.classList =\n 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n var titletext = document.createElement('div');\n titletext.classList = 'ui-dialog-title';\n titletext.setAttribute(\n 'style',\n 'width: 100%; text-align: center; padding: 3px;'\n );\n titlebar.appendChild(titletext);\n this.root.appendChild(titlebar);\n this.header = titletext;\n};\n\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._init_canvas = function () {\n var fig = this;\n\n var canvas_div = (this.canvas_div = document.createElement('div'));\n canvas_div.setAttribute('tabindex', '0');\n canvas_div.setAttribute(\n 'style',\n 'border: 1px solid #ddd;' +\n 'box-sizing: content-box;' +\n 'clear: both;' +\n 'min-height: 1px;' +\n 'min-width: 1px;' +\n 'outline: 0;' +\n 'overflow: hidden;' +\n 'position: relative;' +\n 'resize: both;' +\n 'z-index: 2;'\n );\n\n function on_keyboard_event_closure(name) {\n return function (event) {\n return fig.key_event(event, name);\n };\n }\n\n canvas_div.addEventListener(\n 'keydown',\n on_keyboard_event_closure('key_press')\n );\n canvas_div.addEventListener(\n 'keyup',\n on_keyboard_event_closure('key_release')\n );\n\n this._canvas_extra_style(canvas_div);\n this.root.appendChild(canvas_div);\n\n var canvas = (this.canvas = document.createElement('canvas'));\n canvas.classList.add('mpl-canvas');\n canvas.setAttribute(\n 'style',\n 'box-sizing: content-box;' +\n 'pointer-events: none;' +\n 'position: relative;' +\n 'z-index: 0;'\n );\n\n this.context = canvas.getContext('2d');\n\n var backingStore =\n this.context.backingStorePixelRatio ||\n this.context.webkitBackingStorePixelRatio ||\n this.context.mozBackingStorePixelRatio ||\n this.context.msBackingStorePixelRatio ||\n this.context.oBackingStorePixelRatio ||\n this.context.backingStorePixelRatio ||\n 1;\n\n this.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n 'canvas'\n ));\n rubberband_canvas.setAttribute(\n 'style',\n 'box-sizing: content-box;' +\n 'left: 0;' +\n 'pointer-events: none;' +\n 'position: absolute;' +\n 'top: 0;' +\n 'z-index: 1;'\n );\n\n // Apply a ponyfill if ResizeObserver is not implemented by browser.\n if (this.ResizeObserver === undefined) {\n if (window.ResizeObserver !== undefined) {\n this.ResizeObserver = window.ResizeObserver;\n } else {\n var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n this.ResizeObserver = obs.ResizeObserver;\n }\n }\n\n this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n var nentries = entries.length;\n for (var i = 0; i < nentries; i++) {\n var entry = entries[i];\n var width, height;\n if (entry.contentBoxSize) {\n if (entry.contentBoxSize instanceof Array) {\n // Chrome 84 implements new version of spec.\n width = entry.contentBoxSize[0].inlineSize;\n height = entry.contentBoxSize[0].blockSize;\n } else {\n // Firefox implements old version of spec.\n width = entry.contentBoxSize.inlineSize;\n height = entry.contentBoxSize.blockSize;\n }\n } else {\n // Chrome <84 implements even older version of spec.\n width = entry.contentRect.width;\n height = entry.contentRect.height;\n }\n\n // Keep the size of the canvas and rubber band canvas in sync with\n // the canvas container.\n if (entry.devicePixelContentBoxSize) {\n // Chrome 84 implements new version of spec.\n canvas.setAttribute(\n 'width',\n entry.devicePixelContentBoxSize[0].inlineSize\n );\n canvas.setAttribute(\n 'height',\n entry.devicePixelContentBoxSize[0].blockSize\n );\n } else {\n canvas.setAttribute('width', width * fig.ratio);\n canvas.setAttribute('height', height * fig.ratio);\n }\n /* This rescales the canvas back to display pixels, so that it\n * appears correct on HiDPI screens. */\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n\n rubberband_canvas.setAttribute('width', width);\n rubberband_canvas.setAttribute('height', height);\n\n // And update the size in Python. We ignore the initial 0/0 size\n // that occurs as the element is placed into the DOM, which should\n // otherwise not happen due to the minimum size styling.\n if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n fig.request_resize(width, height);\n }\n }\n });\n this.resizeObserverInstance.observe(canvas_div);\n\n function on_mouse_event_closure(name) {\n /* User Agent sniffing is bad, but WebKit is busted:\n * https://bugs.webkit.org/show_bug.cgi?id=144526\n * https://bugs.webkit.org/show_bug.cgi?id=181818\n * The worst that happens here is that they get an extra browser\n * selection when dragging, if this check fails to catch them.\n */\n var UA = navigator.userAgent;\n var isWebKit = /AppleWebKit/.test(UA) && !/Chrome/.test(UA);\n if(isWebKit) {\n return function (event) {\n /* This prevents the web browser from automatically changing to\n * the text insertion cursor when the button is pressed. We\n * want to control all of the cursor setting manually through\n * the 'cursor' event from matplotlib */\n event.preventDefault()\n return fig.mouse_event(event, name);\n };\n } else {\n return function (event) {\n return fig.mouse_event(event, name);\n };\n }\n }\n\n canvas_div.addEventListener(\n 'mousedown',\n on_mouse_event_closure('button_press')\n );\n canvas_div.addEventListener(\n 'mouseup',\n on_mouse_event_closure('button_release')\n );\n canvas_div.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\n );\n // Throttle sequential mouse events to 1 every 20ms.\n canvas_div.addEventListener(\n 'mousemove',\n on_mouse_event_closure('motion_notify')\n );\n\n canvas_div.addEventListener(\n 'mouseenter',\n on_mouse_event_closure('figure_enter')\n );\n canvas_div.addEventListener(\n 'mouseleave',\n on_mouse_event_closure('figure_leave')\n );\n\n canvas_div.addEventListener('wheel', function (event) {\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n on_mouse_event_closure('scroll')(event);\n });\n\n canvas_div.appendChild(canvas);\n canvas_div.appendChild(rubberband_canvas);\n\n this.rubberband_context = rubberband_canvas.getContext('2d');\n this.rubberband_context.strokeStyle = '#000000';\n\n this._resize_canvas = function (width, height, forward) {\n if (forward) {\n canvas_div.style.width = width + 'px';\n canvas_div.style.height = height + 'px';\n }\n };\n\n // Disable right mouse context menu.\n canvas_div.addEventListener('contextmenu', function (_e) {\n event.preventDefault();\n return false;\n });\n\n function set_focus() {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n};\n\nmpl.figure.prototype._init_toolbar = function () {\n var fig = this;\n\n var toolbar = document.createElement('div');\n toolbar.classList = 'mpl-toolbar';\n this.root.appendChild(toolbar);\n\n function on_click_closure(name) {\n return function (_event) {\n return fig.toolbar_button_onclick(name);\n };\n }\n\n function on_mouseover_closure(tooltip) {\n return function (event) {\n if (!event.currentTarget.disabled) {\n return fig.toolbar_button_onmouseover(tooltip);\n }\n };\n }\n\n fig.buttons = {};\n var buttonGroup = document.createElement('div');\n buttonGroup.classList = 'mpl-button-group';\n for (var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n /* Instead of a spacer, we start a new button group. */\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n buttonGroup = document.createElement('div');\n buttonGroup.classList = 'mpl-button-group';\n continue;\n }\n\n var button = (fig.buttons[name] = document.createElement('button'));\n button.classList = 'mpl-widget';\n button.setAttribute('role', 'button');\n button.setAttribute('aria-disabled', 'false');\n button.addEventListener('click', on_click_closure(method_name));\n button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n\n var icon_img = document.createElement('img');\n icon_img.src = '_images/' + image + '.png';\n icon_img.srcset = '_images/' + image + '_large.png 2x';\n icon_img.alt = tooltip;\n button.appendChild(icon_img);\n\n buttonGroup.appendChild(button);\n }\n\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n\n var fmt_picker = document.createElement('select');\n fmt_picker.classList = 'mpl-widget';\n toolbar.appendChild(fmt_picker);\n this.format_dropdown = fmt_picker;\n\n for (var ind in mpl.extensions) {\n var fmt = mpl.extensions[ind];\n var option = document.createElement('option');\n option.selected = fmt === mpl.default_extension;\n option.innerHTML = fmt;\n fmt_picker.appendChild(option);\n }\n\n var status_bar = document.createElement('span');\n status_bar.classList = 'mpl-message';\n toolbar.appendChild(status_bar);\n this.message = status_bar;\n};\n\nmpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n // which will in turn request a refresh of the image.\n this.send_message('resize', { width: x_pixels, height: y_pixels });\n};\n\nmpl.figure.prototype.send_message = function (type, properties) {\n properties['type'] = type;\n properties['figure_id'] = this.id;\n this.ws.send(JSON.stringify(properties));\n};\n\nmpl.figure.prototype.send_draw_message = function () {\n if (!this.waiting) {\n this.waiting = true;\n this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n }\n};\n\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n var format_dropdown = fig.format_dropdown;\n var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n fig.ondownload(fig, format);\n};\n\nmpl.figure.prototype.handle_resize = function (fig, msg) {\n var size = msg['size'];\n if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n fig._resize_canvas(size[0], size[1], msg['forward']);\n fig.send_message('refresh', {});\n }\n};\n\nmpl.figure.prototype.handle_rubberband = function (fig, msg) {\n var x0 = msg['x0'] / fig.ratio;\n var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n var x1 = msg['x1'] / fig.ratio;\n var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n x0 = Math.floor(x0) + 0.5;\n y0 = Math.floor(y0) + 0.5;\n x1 = Math.floor(x1) + 0.5;\n y1 = Math.floor(y1) + 0.5;\n var min_x = Math.min(x0, x1);\n var min_y = Math.min(y0, y1);\n var width = Math.abs(x1 - x0);\n var height = Math.abs(y1 - y0);\n\n fig.rubberband_context.clearRect(\n 0,\n 0,\n fig.canvas.width / fig.ratio,\n fig.canvas.height / fig.ratio\n );\n\n fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n};\n\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.canvas_div.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n for (var key in msg) {\n if (!(key in fig.buttons)) {\n continue;\n }\n fig.buttons[key].disabled = !msg[key];\n fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n }\n};\n\nmpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n if (msg['mode'] === 'PAN') {\n fig.buttons['Pan'].classList.add('active');\n fig.buttons['Zoom'].classList.remove('active');\n } else if (msg['mode'] === 'ZOOM') {\n fig.buttons['Pan'].classList.remove('active');\n fig.buttons['Zoom'].classList.add('active');\n } else {\n fig.buttons['Pan'].classList.remove('active');\n fig.buttons['Zoom'].classList.remove('active');\n }\n};\n\nmpl.figure.prototype.updated_canvas_event = function () {\n // Called whenever the canvas gets updated.\n this.send_message('ack', {});\n};\n\n// A function to construct a web socket function for onmessage handling.\n// Called in the figure constructor.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\n /* FIXME: We get \"Resource interpreted as Image but\n * transferred with MIME type text/plain:\" errors on\n * Chrome. But how to set the MIME type? It doesn't seem\n * to be part of the websocket stream */\n img.type = 'image/png';\n }\n\n /* Free the memory for the previous frames */\n if (fig.imageObj.src) {\n (window.URL || window.webkitURL).revokeObjectURL(\n fig.imageObj.src\n );\n }\n\n fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n img\n );\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n } else if (\n typeof evt.data === 'string' &&\n evt.data.slice(0, 21) === 'data:image/png;base64'\n ) {\n fig.imageObj.src = evt.data;\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n }\n\n var msg = JSON.parse(evt.data);\n var msg_type = msg['type'];\n\n // Call the \"handle_{type}\" callback, which takes\n // the figure and JSON message as its only arguments.\n try {\n var callback = fig['handle_' + msg_type];\n } catch (e) {\n console.log(\n \"No handler for the '\" + msg_type + \"' message type: \",\n msg\n );\n return;\n }\n\n if (callback) {\n try {\n // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n callback(fig, msg);\n } catch (e) {\n console.log(\n \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n e,\n e.stack,\n msg\n );\n }\n }\n };\n};\n\nfunction getModifiers(event) {\n var mods = [];\n if (event.ctrlKey) {\n mods.push('ctrl');\n }\n if (event.altKey) {\n mods.push('alt');\n }\n if (event.shiftKey) {\n mods.push('shift');\n }\n if (event.metaKey) {\n mods.push('meta');\n }\n return mods;\n}\n\n/*\n * return a copy of an object with only non-object keys\n * we need this to avoid circular references\n * https://stackoverflow.com/a/24161582/3208463\n */\nfunction simpleKeys(original) {\n return Object.keys(original).reduce(function (obj, key) {\n if (typeof original[key] !== 'object') {\n obj[key] = original[key];\n }\n return obj;\n }, {});\n}\n\nmpl.figure.prototype.mouse_event = function (event, name) {\n if (name === 'button_press') {\n this.canvas.focus();\n this.canvas_div.focus();\n }\n\n // from https://stackoverflow.com/q/1114465\n var boundingRect = this.canvas.getBoundingClientRect();\n var x = (event.clientX - boundingRect.left) * this.ratio;\n var y = (event.clientY - boundingRect.top) * this.ratio;\n\n this.send_message(name, {\n x: x,\n y: y,\n button: event.button,\n step: event.step,\n modifiers: getModifiers(event),\n guiEvent: simpleKeys(event),\n });\n\n return false;\n};\n\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.figure.prototype.toolbar_button_onclick = function (name) {\n if (name === 'download') {\n this.handle_save(this, null);\n } else {\n this.send_message('toolbar_button', { name: name });\n }\n};\n\nmpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n this.message.textContent = tooltip;\n};\n\n///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n// prettier-ignore\nvar _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\nmpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\", \"webp\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar comm_websocket_adapter = function (comm) {\n // Create a \"websocket\"-like object which calls the given IPython comm\n // object with the appropriate methods. Currently this is a non binary\n // socket, so there is still some room for performance tuning.\n var ws = {};\n\n ws.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\n\n ws.close = function () {\n comm.close();\n };\n ws.send = function (m) {\n //console.log('sending', m);\n comm.send(m);\n };\n // Register the callback with on_msg.\n comm.on_msg(function (msg) {\n //console.log('receiving', msg['content']['data'], msg);\n var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.mpl_figure_comm = function (comm, msg) {\n // This is the function which gets called when the mpl process\n // starts-up an IPython Comm through the \"matplotlib\" channel.\n\n var id = msg.content.data.id;\n // Get hold of the div created by the display call when the Comm\n // socket was opened in Python.\n var element = document.getElementById(id);\n var ws_proxy = comm_websocket_adapter(comm);\n\n function ondownload(figure, _format) {\n window.open(figure.canvas.toDataURL());\n }\n\n var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n\n // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n // web socket which is closed, not our websocket->open comm proxy.\n ws_proxy.onopen();\n\n fig.parent_element = element;\n fig.cell_info = mpl.find_output_cell(\"
\");\n if (!fig.cell_info) {\n console.error('Failed to find cell for figure', id, fig);\n return;\n }\n fig.cell_info[0].output_area.element.on(\n 'cleared',\n { fig: fig },\n fig._remove_fig_handler\n );\n};\n\nmpl.figure.prototype.handle_close = function (fig, msg) {\n var width = fig.canvas.width / fig.ratio;\n fig.cell_info[0].output_area.element.off(\n 'cleared',\n fig._remove_fig_handler\n );\n fig.resizeObserverInstance.unobserve(fig.canvas_div);\n\n // Update the output cell to use the data from the current canvas.\n fig.push_to_output();\n var dataURL = fig.canvas.toDataURL();\n // Re-enable the keyboard manager in IPython - without this line, in FF,\n // the notebook keyboard shortcuts fail.\n IPython.keyboard_manager.enable();\n fig.parent_element.innerHTML =\n '';\n fig.close_ws(fig, msg);\n};\n\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.figure.prototype.push_to_output = function (_remove_interactive) {\n // Turn the data on the canvas into data in the output cell.\n var width = this.canvas.width / this.ratio;\n var dataURL = this.canvas.toDataURL();\n this.cell_info[1]['text/html'] =\n '';\n};\n\nmpl.figure.prototype.updated_canvas_event = function () {\n // Tell IPython that the notebook contents must change.\n IPython.notebook.set_dirty(true);\n this.send_message('ack', {});\n var fig = this;\n // Wait a second, then push the new image to the DOM so\n // that it is saved nicely (might be nice to debounce this).\n setTimeout(function () {\n fig.push_to_output();\n }, 1000);\n};\n\nmpl.figure.prototype._init_toolbar = function () {\n var fig = this;\n\n var toolbar = document.createElement('div');\n toolbar.classList = 'btn-toolbar';\n this.root.appendChild(toolbar);\n\n function on_click_closure(name) {\n return function (_event) {\n return fig.toolbar_button_onclick(name);\n };\n }\n\n function on_mouseover_closure(tooltip) {\n return function (event) {\n if (!event.currentTarget.disabled) {\n return fig.toolbar_button_onmouseover(tooltip);\n }\n };\n }\n\n fig.buttons = {};\n var buttonGroup = document.createElement('div');\n buttonGroup.classList = 'btn-group';\n var button;\n for (var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n /* Instead of a spacer, we start a new button group. */\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n buttonGroup = document.createElement('div');\n buttonGroup.classList = 'btn-group';\n continue;\n }\n\n button = fig.buttons[name] = document.createElement('button');\n button.classList = 'btn btn-default';\n button.href = '#';\n button.title = name;\n button.innerHTML = '';\n button.addEventListener('click', on_click_closure(method_name));\n button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n buttonGroup.appendChild(button);\n }\n\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n\n // Add the status bar.\n var status_bar = document.createElement('span');\n status_bar.classList = 'mpl-message pull-right';\n toolbar.appendChild(status_bar);\n this.message = status_bar;\n\n // Add the close button to the window.\n var buttongrp = document.createElement('div');\n buttongrp.classList = 'btn-group inline pull-right';\n button = document.createElement('button');\n button.classList = 'btn btn-mini btn-primary';\n button.href = '#';\n button.title = 'Stop Interaction';\n button.innerHTML = '';\n button.addEventListener('click', function (_evt) {\n fig.handle_close(fig, {});\n });\n button.addEventListener(\n 'mouseover',\n on_mouseover_closure('Stop Interaction')\n );\n buttongrp.appendChild(button);\n var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n titlebar.insertBefore(buttongrp, titlebar.firstChild);\n};\n\nmpl.figure.prototype._remove_fig_handler = function (event) {\n var fig = event.data.fig;\n if (event.target !== this) {\n // Ignore bubbled events from children.\n return;\n }\n fig.close_ws(fig, {});\n};\n\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.figure.prototype._canvas_extra_style = function (el) {\n // this is important to make the div 'focusable\n el.setAttribute('tabindex', 0);\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n } else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n};\n\nmpl.figure.prototype._key_event_extra = function (event, _name) {\n // Check for shift+enter\n if (event.shiftKey && event.which === 13) {\n this.canvas_div.blur();\n // select the cell after this one\n var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n IPython.notebook.select(index + 1);\n }\n};\n\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.find_output_cell = function (html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i = 0; i < ncells; i++) {\n var cell = cells[i];\n if (cell.cell_type === 'code') {\n for (var j = 0; j < cell.output_area.outputs.length; j++) {\n var data = cell.output_area.outputs[j];\n if (data.data) {\n // IPython >= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] === html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n};\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(14, 7))\n", + "plt.plot(data.index, data['Close'], label='Close Price')\n", + "plt.title('BTC/USDT Close Price')\n", + "plt.xlabel('Date')\n", + "plt.ylabel('Price (USDT)')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Running the Backtest\n", + "Now, let's run the backtest using the RSI and Bollinger Bands strategy.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Executing query:\n", + "\n", + " SELECT timestamp AS date, open AS open, high AS high, low AS low, close AS close, volume AS volume \n", + " FROM public.\"ohlcv_BTC_USDT\"\n", + " WHERE timestamp >= '2023-01-01T00:00:00Z' AND timestamp <= '2023-07-01T00:00:00Z';\n", + " \n", + "\n", + "Fetched data:\n", + " date open high low close volume\n", + "0 2023-06-20 26844.35 28402.74 26652.00 28307.99 69666.95525\n", + "1 2023-06-21 28308.00 30800.00 28257.99 29993.89 108926.40412\n", + "2 2023-06-22 29993.89 30500.00 29525.61 29884.92 59054.56460\n", + "3 2023-06-23 29884.92 31431.94 29800.00 30688.50 73931.89635\n", + "4 2023-06-24 30688.51 30800.00 30250.00 30527.43 30513.30135\n", + "\n", + "Starting Portfolio Value: 10000.00\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\backtrader\\cerebro.py:670: SyntaxWarning: invalid escape sequence '\\*'\n", + " '''Adds a callback to get messages which would be handled by the\n", + "c:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\backtrader\\cerebro.py:712: SyntaxWarning: invalid escape sequence '\\*'\n", + " '''Adds a callback to get messages which would be handled by the\n" + ] + }, + { + "ename": "IndexError", + "evalue": "array assignment index out of range", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[19], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mrun_backtest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mRsiBollingerBandsStrategy\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msymbol\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstart_date\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend_date\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mStarting Portfolio Value: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresult[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mStarting Portfolio Value\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mEnding Portfolio Value: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresult[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEnding Portfolio Value\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[1;32mc:\\Users\\dell\\Desktop\\10Academy\\crypto-trading-backtesting\\scripts\\backtest_runner.py:83\u001b[0m, in \u001b[0;36mrun_backtest\u001b[1;34m(strategy, symbol, start_date, end_date)\u001b[0m\n\u001b[0;32m 80\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mStarting Portfolio Value: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mcerebro\u001b[38;5;241m.\u001b[39mbroker\u001b[38;5;241m.\u001b[39mgetvalue()\u001b[38;5;132;01m:\u001b[39;00m\u001b[38;5;124m.2f\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 82\u001b[0m \u001b[38;5;66;03m# Run backtest\u001b[39;00m\n\u001b[1;32m---> 83\u001b[0m \u001b[43mcerebro\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 85\u001b[0m \u001b[38;5;66;03m# Print ending conditions\u001b[39;00m\n\u001b[0;32m 86\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEnding Portfolio Value: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mcerebro\u001b[38;5;241m.\u001b[39mbroker\u001b[38;5;241m.\u001b[39mgetvalue()\u001b[38;5;132;01m:\u001b[39;00m\u001b[38;5;124m.2f\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\backtrader\\cerebro.py:1132\u001b[0m, in \u001b[0;36mCerebro.run\u001b[1;34m(self, **kwargs)\u001b[0m\n\u001b[0;32m 1128\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_dooptimize \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mp\u001b[38;5;241m.\u001b[39mmaxcpus \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[0;32m 1129\u001b[0m \u001b[38;5;66;03m# If no optimmization is wished ... or 1 core is to be used\u001b[39;00m\n\u001b[0;32m 1130\u001b[0m \u001b[38;5;66;03m# let's skip process \"spawning\"\u001b[39;00m\n\u001b[0;32m 1131\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m iterstrat \u001b[38;5;129;01min\u001b[39;00m iterstrats:\n\u001b[1;32m-> 1132\u001b[0m runstrat \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrunstrategies\u001b[49m\u001b[43m(\u001b[49m\u001b[43miterstrat\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1133\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrunstrats\u001b[38;5;241m.\u001b[39mappend(runstrat)\n\u001b[0;32m 1134\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_dooptimize:\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\backtrader\\cerebro.py:1298\u001b[0m, in \u001b[0;36mCerebro.runstrategies\u001b[1;34m(self, iterstrat, predata)\u001b[0m\n\u001b[0;32m 1296\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_runonce_old(runstrats)\n\u001b[0;32m 1297\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 1298\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_runonce\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrunstrats\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1299\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1300\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mp\u001b[38;5;241m.\u001b[39moldsync:\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\backtrader\\cerebro.py:1657\u001b[0m, in \u001b[0;36mCerebro._runonce\u001b[1;34m(self, runstrats)\u001b[0m\n\u001b[0;32m 1650\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m'''\u001b[39;00m\n\u001b[0;32m 1651\u001b[0m \u001b[38;5;124;03mActual implementation of run in vector mode.\u001b[39;00m\n\u001b[0;32m 1652\u001b[0m \n\u001b[0;32m 1653\u001b[0m \u001b[38;5;124;03mStrategies are still invoked on a pseudo-event mode in which ``next``\u001b[39;00m\n\u001b[0;32m 1654\u001b[0m \u001b[38;5;124;03mis called for each data arrival\u001b[39;00m\n\u001b[0;32m 1655\u001b[0m \u001b[38;5;124;03m'''\u001b[39;00m\n\u001b[0;32m 1656\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m strat \u001b[38;5;129;01min\u001b[39;00m runstrats:\n\u001b[1;32m-> 1657\u001b[0m \u001b[43mstrat\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_once\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1658\u001b[0m strat\u001b[38;5;241m.\u001b[39mreset() \u001b[38;5;66;03m# strat called next by next - reset lines\u001b[39;00m\n\u001b[0;32m 1660\u001b[0m \u001b[38;5;66;03m# The default once for strategies does nothing and therefore\u001b[39;00m\n\u001b[0;32m 1661\u001b[0m \u001b[38;5;66;03m# has not moved forward all datas/indicators/observers that\u001b[39;00m\n\u001b[0;32m 1662\u001b[0m \u001b[38;5;66;03m# were homed before calling once, Hence no \"need\" to do it\u001b[39;00m\n\u001b[0;32m 1663\u001b[0m \u001b[38;5;66;03m# here again, because pointers are at 0\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\backtrader\\lineiterator.py:297\u001b[0m, in \u001b[0;36mLineIterator._once\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 294\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mforward(size\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_clock\u001b[38;5;241m.\u001b[39mbuflen())\n\u001b[0;32m 296\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m indicator \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_lineiterators[LineIterator\u001b[38;5;241m.\u001b[39mIndType]:\n\u001b[1;32m--> 297\u001b[0m \u001b[43mindicator\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_once\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 299\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m observer \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_lineiterators[LineIterator\u001b[38;5;241m.\u001b[39mObsType]:\n\u001b[0;32m 300\u001b[0m observer\u001b[38;5;241m.\u001b[39mforward(size\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuflen())\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\backtrader\\lineiterator.py:297\u001b[0m, in \u001b[0;36mLineIterator._once\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 294\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mforward(size\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_clock\u001b[38;5;241m.\u001b[39mbuflen())\n\u001b[0;32m 296\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m indicator \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_lineiterators[LineIterator\u001b[38;5;241m.\u001b[39mIndType]:\n\u001b[1;32m--> 297\u001b[0m \u001b[43mindicator\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_once\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 299\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m observer \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_lineiterators[LineIterator\u001b[38;5;241m.\u001b[39mObsType]:\n\u001b[0;32m 300\u001b[0m observer\u001b[38;5;241m.\u001b[39mforward(size\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuflen())\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\backtrader\\lineiterator.py:297\u001b[0m, in \u001b[0;36mLineIterator._once\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 294\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mforward(size\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_clock\u001b[38;5;241m.\u001b[39mbuflen())\n\u001b[0;32m 296\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m indicator \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_lineiterators[LineIterator\u001b[38;5;241m.\u001b[39mIndType]:\n\u001b[1;32m--> 297\u001b[0m \u001b[43mindicator\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_once\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 299\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m observer \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_lineiterators[LineIterator\u001b[38;5;241m.\u001b[39mObsType]:\n\u001b[0;32m 300\u001b[0m observer\u001b[38;5;241m.\u001b[39mforward(size\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuflen())\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\backtrader\\lineiterator.py:317\u001b[0m, in \u001b[0;36mLineIterator._once\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 313\u001b[0m \u001b[38;5;66;03m# These 3 remain empty for a strategy and therefore play no role\u001b[39;00m\n\u001b[0;32m 314\u001b[0m \u001b[38;5;66;03m# because a strategy will always be executed on a next basis\u001b[39;00m\n\u001b[0;32m 315\u001b[0m \u001b[38;5;66;03m# indicators are each called with its min period\u001b[39;00m\n\u001b[0;32m 316\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpreonce(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_minperiod \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m--> 317\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moncestart\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_minperiod\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_minperiod\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 318\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39monce(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_minperiod, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuflen())\n\u001b[0;32m 320\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m line \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlines:\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\backtrader\\indicators\\basicops.py:401\u001b[0m, in \u001b[0;36mExponentialSmoothing.oncestart\u001b[1;34m(self, start, end)\u001b[0m\n\u001b[0;32m 399\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21moncestart\u001b[39m(\u001b[38;5;28mself\u001b[39m, start, end):\n\u001b[0;32m 400\u001b[0m \u001b[38;5;66;03m# Fetch the seed value from the base class calculation\u001b[39;00m\n\u001b[1;32m--> 401\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mExponentialSmoothing\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43monce\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\backtrader\\indicators\\basicops.py:364\u001b[0m, in \u001b[0;36mAverage.once\u001b[1;34m(self, start, end)\u001b[0m\n\u001b[0;32m 361\u001b[0m period \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mp\u001b[38;5;241m.\u001b[39mperiod\n\u001b[0;32m 363\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(start, end):\n\u001b[1;32m--> 364\u001b[0m \u001b[43mdst\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m \u001b[38;5;241m=\u001b[39m math\u001b[38;5;241m.\u001b[39mfsum(src[i \u001b[38;5;241m-\u001b[39m period \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m:i \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m]) \u001b[38;5;241m/\u001b[39m period\n", + "\u001b[1;31mIndexError\u001b[0m: array assignment index out of range" + ] + } + ], + "source": [ + "result = run_backtest(RsiBollingerBandsStrategy, symbol, start_date, end_date)\n", + "print(f\"Starting Portfolio Value: {result['Starting Portfolio Value']}\")\n", + "print(f\"Ending Portfolio Value: {result['Ending Portfolio Value']}\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizing the Strategy\n", + "We will plot the closing prices along with the RSI and Bollinger Bands to visualize the strategy's performance.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.get_websocket_type = function () {\n if (typeof WebSocket !== 'undefined') {\n return WebSocket;\n } else if (typeof MozWebSocket !== 'undefined') {\n return MozWebSocket;\n } else {\n alert(\n 'Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.'\n );\n }\n};\n\nmpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = this.ws.binaryType !== undefined;\n\n if (!this.supports_binary) {\n var warnings = document.getElementById('mpl-warnings');\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent =\n 'This browser does not support binary websocket messages. ' +\n 'Performance may be slow.';\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = document.createElement('div');\n this.root.setAttribute('style', 'display: inline-block');\n this._root_extra_style(this.root);\n\n parent_element.appendChild(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message('supports_binary', { value: fig.supports_binary });\n fig.send_message('send_image_mode', {});\n if (fig.ratio !== 1) {\n fig.send_message('set_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\n }\n fig.send_message('refresh', {});\n };\n\n this.imageObj.onload = function () {\n if (fig.image_mode === 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function () {\n fig.ws.close();\n };\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n};\n\nmpl.figure.prototype._init_header = function () {\n var titlebar = document.createElement('div');\n titlebar.classList =\n 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n var titletext = document.createElement('div');\n titletext.classList = 'ui-dialog-title';\n titletext.setAttribute(\n 'style',\n 'width: 100%; text-align: center; padding: 3px;'\n );\n titlebar.appendChild(titletext);\n this.root.appendChild(titlebar);\n this.header = titletext;\n};\n\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._init_canvas = function () {\n var fig = this;\n\n var canvas_div = (this.canvas_div = document.createElement('div'));\n canvas_div.setAttribute('tabindex', '0');\n canvas_div.setAttribute(\n 'style',\n 'border: 1px solid #ddd;' +\n 'box-sizing: content-box;' +\n 'clear: both;' +\n 'min-height: 1px;' +\n 'min-width: 1px;' +\n 'outline: 0;' +\n 'overflow: hidden;' +\n 'position: relative;' +\n 'resize: both;' +\n 'z-index: 2;'\n );\n\n function on_keyboard_event_closure(name) {\n return function (event) {\n return fig.key_event(event, name);\n };\n }\n\n canvas_div.addEventListener(\n 'keydown',\n on_keyboard_event_closure('key_press')\n );\n canvas_div.addEventListener(\n 'keyup',\n on_keyboard_event_closure('key_release')\n );\n\n this._canvas_extra_style(canvas_div);\n this.root.appendChild(canvas_div);\n\n var canvas = (this.canvas = document.createElement('canvas'));\n canvas.classList.add('mpl-canvas');\n canvas.setAttribute(\n 'style',\n 'box-sizing: content-box;' +\n 'pointer-events: none;' +\n 'position: relative;' +\n 'z-index: 0;'\n );\n\n this.context = canvas.getContext('2d');\n\n var backingStore =\n this.context.backingStorePixelRatio ||\n this.context.webkitBackingStorePixelRatio ||\n this.context.mozBackingStorePixelRatio ||\n this.context.msBackingStorePixelRatio ||\n this.context.oBackingStorePixelRatio ||\n this.context.backingStorePixelRatio ||\n 1;\n\n this.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n 'canvas'\n ));\n rubberband_canvas.setAttribute(\n 'style',\n 'box-sizing: content-box;' +\n 'left: 0;' +\n 'pointer-events: none;' +\n 'position: absolute;' +\n 'top: 0;' +\n 'z-index: 1;'\n );\n\n // Apply a ponyfill if ResizeObserver is not implemented by browser.\n if (this.ResizeObserver === undefined) {\n if (window.ResizeObserver !== undefined) {\n this.ResizeObserver = window.ResizeObserver;\n } else {\n var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n this.ResizeObserver = obs.ResizeObserver;\n }\n }\n\n this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n var nentries = entries.length;\n for (var i = 0; i < nentries; i++) {\n var entry = entries[i];\n var width, height;\n if (entry.contentBoxSize) {\n if (entry.contentBoxSize instanceof Array) {\n // Chrome 84 implements new version of spec.\n width = entry.contentBoxSize[0].inlineSize;\n height = entry.contentBoxSize[0].blockSize;\n } else {\n // Firefox implements old version of spec.\n width = entry.contentBoxSize.inlineSize;\n height = entry.contentBoxSize.blockSize;\n }\n } else {\n // Chrome <84 implements even older version of spec.\n width = entry.contentRect.width;\n height = entry.contentRect.height;\n }\n\n // Keep the size of the canvas and rubber band canvas in sync with\n // the canvas container.\n if (entry.devicePixelContentBoxSize) {\n // Chrome 84 implements new version of spec.\n canvas.setAttribute(\n 'width',\n entry.devicePixelContentBoxSize[0].inlineSize\n );\n canvas.setAttribute(\n 'height',\n entry.devicePixelContentBoxSize[0].blockSize\n );\n } else {\n canvas.setAttribute('width', width * fig.ratio);\n canvas.setAttribute('height', height * fig.ratio);\n }\n /* This rescales the canvas back to display pixels, so that it\n * appears correct on HiDPI screens. */\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n\n rubberband_canvas.setAttribute('width', width);\n rubberband_canvas.setAttribute('height', height);\n\n // And update the size in Python. We ignore the initial 0/0 size\n // that occurs as the element is placed into the DOM, which should\n // otherwise not happen due to the minimum size styling.\n if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n fig.request_resize(width, height);\n }\n }\n });\n this.resizeObserverInstance.observe(canvas_div);\n\n function on_mouse_event_closure(name) {\n /* User Agent sniffing is bad, but WebKit is busted:\n * https://bugs.webkit.org/show_bug.cgi?id=144526\n * https://bugs.webkit.org/show_bug.cgi?id=181818\n * The worst that happens here is that they get an extra browser\n * selection when dragging, if this check fails to catch them.\n */\n var UA = navigator.userAgent;\n var isWebKit = /AppleWebKit/.test(UA) && !/Chrome/.test(UA);\n if(isWebKit) {\n return function (event) {\n /* This prevents the web browser from automatically changing to\n * the text insertion cursor when the button is pressed. We\n * want to control all of the cursor setting manually through\n * the 'cursor' event from matplotlib */\n event.preventDefault()\n return fig.mouse_event(event, name);\n };\n } else {\n return function (event) {\n return fig.mouse_event(event, name);\n };\n }\n }\n\n canvas_div.addEventListener(\n 'mousedown',\n on_mouse_event_closure('button_press')\n );\n canvas_div.addEventListener(\n 'mouseup',\n on_mouse_event_closure('button_release')\n );\n canvas_div.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\n );\n // Throttle sequential mouse events to 1 every 20ms.\n canvas_div.addEventListener(\n 'mousemove',\n on_mouse_event_closure('motion_notify')\n );\n\n canvas_div.addEventListener(\n 'mouseenter',\n on_mouse_event_closure('figure_enter')\n );\n canvas_div.addEventListener(\n 'mouseleave',\n on_mouse_event_closure('figure_leave')\n );\n\n canvas_div.addEventListener('wheel', function (event) {\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n on_mouse_event_closure('scroll')(event);\n });\n\n canvas_div.appendChild(canvas);\n canvas_div.appendChild(rubberband_canvas);\n\n this.rubberband_context = rubberband_canvas.getContext('2d');\n this.rubberband_context.strokeStyle = '#000000';\n\n this._resize_canvas = function (width, height, forward) {\n if (forward) {\n canvas_div.style.width = width + 'px';\n canvas_div.style.height = height + 'px';\n }\n };\n\n // Disable right mouse context menu.\n canvas_div.addEventListener('contextmenu', function (_e) {\n event.preventDefault();\n return false;\n });\n\n function set_focus() {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n};\n\nmpl.figure.prototype._init_toolbar = function () {\n var fig = this;\n\n var toolbar = document.createElement('div');\n toolbar.classList = 'mpl-toolbar';\n this.root.appendChild(toolbar);\n\n function on_click_closure(name) {\n return function (_event) {\n return fig.toolbar_button_onclick(name);\n };\n }\n\n function on_mouseover_closure(tooltip) {\n return function (event) {\n if (!event.currentTarget.disabled) {\n return fig.toolbar_button_onmouseover(tooltip);\n }\n };\n }\n\n fig.buttons = {};\n var buttonGroup = document.createElement('div');\n buttonGroup.classList = 'mpl-button-group';\n for (var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n /* Instead of a spacer, we start a new button group. */\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n buttonGroup = document.createElement('div');\n buttonGroup.classList = 'mpl-button-group';\n continue;\n }\n\n var button = (fig.buttons[name] = document.createElement('button'));\n button.classList = 'mpl-widget';\n button.setAttribute('role', 'button');\n button.setAttribute('aria-disabled', 'false');\n button.addEventListener('click', on_click_closure(method_name));\n button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n\n var icon_img = document.createElement('img');\n icon_img.src = '_images/' + image + '.png';\n icon_img.srcset = '_images/' + image + '_large.png 2x';\n icon_img.alt = tooltip;\n button.appendChild(icon_img);\n\n buttonGroup.appendChild(button);\n }\n\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n\n var fmt_picker = document.createElement('select');\n fmt_picker.classList = 'mpl-widget';\n toolbar.appendChild(fmt_picker);\n this.format_dropdown = fmt_picker;\n\n for (var ind in mpl.extensions) {\n var fmt = mpl.extensions[ind];\n var option = document.createElement('option');\n option.selected = fmt === mpl.default_extension;\n option.innerHTML = fmt;\n fmt_picker.appendChild(option);\n }\n\n var status_bar = document.createElement('span');\n status_bar.classList = 'mpl-message';\n toolbar.appendChild(status_bar);\n this.message = status_bar;\n};\n\nmpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n // which will in turn request a refresh of the image.\n this.send_message('resize', { width: x_pixels, height: y_pixels });\n};\n\nmpl.figure.prototype.send_message = function (type, properties) {\n properties['type'] = type;\n properties['figure_id'] = this.id;\n this.ws.send(JSON.stringify(properties));\n};\n\nmpl.figure.prototype.send_draw_message = function () {\n if (!this.waiting) {\n this.waiting = true;\n this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n }\n};\n\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n var format_dropdown = fig.format_dropdown;\n var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n fig.ondownload(fig, format);\n};\n\nmpl.figure.prototype.handle_resize = function (fig, msg) {\n var size = msg['size'];\n if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n fig._resize_canvas(size[0], size[1], msg['forward']);\n fig.send_message('refresh', {});\n }\n};\n\nmpl.figure.prototype.handle_rubberband = function (fig, msg) {\n var x0 = msg['x0'] / fig.ratio;\n var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n var x1 = msg['x1'] / fig.ratio;\n var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n x0 = Math.floor(x0) + 0.5;\n y0 = Math.floor(y0) + 0.5;\n x1 = Math.floor(x1) + 0.5;\n y1 = Math.floor(y1) + 0.5;\n var min_x = Math.min(x0, x1);\n var min_y = Math.min(y0, y1);\n var width = Math.abs(x1 - x0);\n var height = Math.abs(y1 - y0);\n\n fig.rubberband_context.clearRect(\n 0,\n 0,\n fig.canvas.width / fig.ratio,\n fig.canvas.height / fig.ratio\n );\n\n fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n};\n\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.canvas_div.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n for (var key in msg) {\n if (!(key in fig.buttons)) {\n continue;\n }\n fig.buttons[key].disabled = !msg[key];\n fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n }\n};\n\nmpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n if (msg['mode'] === 'PAN') {\n fig.buttons['Pan'].classList.add('active');\n fig.buttons['Zoom'].classList.remove('active');\n } else if (msg['mode'] === 'ZOOM') {\n fig.buttons['Pan'].classList.remove('active');\n fig.buttons['Zoom'].classList.add('active');\n } else {\n fig.buttons['Pan'].classList.remove('active');\n fig.buttons['Zoom'].classList.remove('active');\n }\n};\n\nmpl.figure.prototype.updated_canvas_event = function () {\n // Called whenever the canvas gets updated.\n this.send_message('ack', {});\n};\n\n// A function to construct a web socket function for onmessage handling.\n// Called in the figure constructor.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\n /* FIXME: We get \"Resource interpreted as Image but\n * transferred with MIME type text/plain:\" errors on\n * Chrome. But how to set the MIME type? It doesn't seem\n * to be part of the websocket stream */\n img.type = 'image/png';\n }\n\n /* Free the memory for the previous frames */\n if (fig.imageObj.src) {\n (window.URL || window.webkitURL).revokeObjectURL(\n fig.imageObj.src\n );\n }\n\n fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n img\n );\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n } else if (\n typeof evt.data === 'string' &&\n evt.data.slice(0, 21) === 'data:image/png;base64'\n ) {\n fig.imageObj.src = evt.data;\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n }\n\n var msg = JSON.parse(evt.data);\n var msg_type = msg['type'];\n\n // Call the \"handle_{type}\" callback, which takes\n // the figure and JSON message as its only arguments.\n try {\n var callback = fig['handle_' + msg_type];\n } catch (e) {\n console.log(\n \"No handler for the '\" + msg_type + \"' message type: \",\n msg\n );\n return;\n }\n\n if (callback) {\n try {\n // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n callback(fig, msg);\n } catch (e) {\n console.log(\n \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n e,\n e.stack,\n msg\n );\n }\n }\n };\n};\n\nfunction getModifiers(event) {\n var mods = [];\n if (event.ctrlKey) {\n mods.push('ctrl');\n }\n if (event.altKey) {\n mods.push('alt');\n }\n if (event.shiftKey) {\n mods.push('shift');\n }\n if (event.metaKey) {\n mods.push('meta');\n }\n return mods;\n}\n\n/*\n * return a copy of an object with only non-object keys\n * we need this to avoid circular references\n * https://stackoverflow.com/a/24161582/3208463\n */\nfunction simpleKeys(original) {\n return Object.keys(original).reduce(function (obj, key) {\n if (typeof original[key] !== 'object') {\n obj[key] = original[key];\n }\n return obj;\n }, {});\n}\n\nmpl.figure.prototype.mouse_event = function (event, name) {\n if (name === 'button_press') {\n this.canvas.focus();\n this.canvas_div.focus();\n }\n\n // from https://stackoverflow.com/q/1114465\n var boundingRect = this.canvas.getBoundingClientRect();\n var x = (event.clientX - boundingRect.left) * this.ratio;\n var y = (event.clientY - boundingRect.top) * this.ratio;\n\n this.send_message(name, {\n x: x,\n y: y,\n button: event.button,\n step: event.step,\n modifiers: getModifiers(event),\n guiEvent: simpleKeys(event),\n });\n\n return false;\n};\n\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.figure.prototype.toolbar_button_onclick = function (name) {\n if (name === 'download') {\n this.handle_save(this, null);\n } else {\n this.send_message('toolbar_button', { name: name });\n }\n};\n\nmpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n this.message.textContent = tooltip;\n};\n\n///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n// prettier-ignore\nvar _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\nmpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\", \"webp\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar comm_websocket_adapter = function (comm) {\n // Create a \"websocket\"-like object which calls the given IPython comm\n // object with the appropriate methods. Currently this is a non binary\n // socket, so there is still some room for performance tuning.\n var ws = {};\n\n ws.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\n\n ws.close = function () {\n comm.close();\n };\n ws.send = function (m) {\n //console.log('sending', m);\n comm.send(m);\n };\n // Register the callback with on_msg.\n comm.on_msg(function (msg) {\n //console.log('receiving', msg['content']['data'], msg);\n var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.mpl_figure_comm = function (comm, msg) {\n // This is the function which gets called when the mpl process\n // starts-up an IPython Comm through the \"matplotlib\" channel.\n\n var id = msg.content.data.id;\n // Get hold of the div created by the display call when the Comm\n // socket was opened in Python.\n var element = document.getElementById(id);\n var ws_proxy = comm_websocket_adapter(comm);\n\n function ondownload(figure, _format) {\n window.open(figure.canvas.toDataURL());\n }\n\n var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n\n // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n // web socket which is closed, not our websocket->open comm proxy.\n ws_proxy.onopen();\n\n fig.parent_element = element;\n fig.cell_info = mpl.find_output_cell(\"
\");\n if (!fig.cell_info) {\n console.error('Failed to find cell for figure', id, fig);\n return;\n }\n fig.cell_info[0].output_area.element.on(\n 'cleared',\n { fig: fig },\n fig._remove_fig_handler\n );\n};\n\nmpl.figure.prototype.handle_close = function (fig, msg) {\n var width = fig.canvas.width / fig.ratio;\n fig.cell_info[0].output_area.element.off(\n 'cleared',\n fig._remove_fig_handler\n );\n fig.resizeObserverInstance.unobserve(fig.canvas_div);\n\n // Update the output cell to use the data from the current canvas.\n fig.push_to_output();\n var dataURL = fig.canvas.toDataURL();\n // Re-enable the keyboard manager in IPython - without this line, in FF,\n // the notebook keyboard shortcuts fail.\n IPython.keyboard_manager.enable();\n fig.parent_element.innerHTML =\n '';\n fig.close_ws(fig, msg);\n};\n\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.figure.prototype.push_to_output = function (_remove_interactive) {\n // Turn the data on the canvas into data in the output cell.\n var width = this.canvas.width / this.ratio;\n var dataURL = this.canvas.toDataURL();\n this.cell_info[1]['text/html'] =\n '';\n};\n\nmpl.figure.prototype.updated_canvas_event = function () {\n // Tell IPython that the notebook contents must change.\n IPython.notebook.set_dirty(true);\n this.send_message('ack', {});\n var fig = this;\n // Wait a second, then push the new image to the DOM so\n // that it is saved nicely (might be nice to debounce this).\n setTimeout(function () {\n fig.push_to_output();\n }, 1000);\n};\n\nmpl.figure.prototype._init_toolbar = function () {\n var fig = this;\n\n var toolbar = document.createElement('div');\n toolbar.classList = 'btn-toolbar';\n this.root.appendChild(toolbar);\n\n function on_click_closure(name) {\n return function (_event) {\n return fig.toolbar_button_onclick(name);\n };\n }\n\n function on_mouseover_closure(tooltip) {\n return function (event) {\n if (!event.currentTarget.disabled) {\n return fig.toolbar_button_onmouseover(tooltip);\n }\n };\n }\n\n fig.buttons = {};\n var buttonGroup = document.createElement('div');\n buttonGroup.classList = 'btn-group';\n var button;\n for (var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n /* Instead of a spacer, we start a new button group. */\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n buttonGroup = document.createElement('div');\n buttonGroup.classList = 'btn-group';\n continue;\n }\n\n button = fig.buttons[name] = document.createElement('button');\n button.classList = 'btn btn-default';\n button.href = '#';\n button.title = name;\n button.innerHTML = '';\n button.addEventListener('click', on_click_closure(method_name));\n button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n buttonGroup.appendChild(button);\n }\n\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n\n // Add the status bar.\n var status_bar = document.createElement('span');\n status_bar.classList = 'mpl-message pull-right';\n toolbar.appendChild(status_bar);\n this.message = status_bar;\n\n // Add the close button to the window.\n var buttongrp = document.createElement('div');\n buttongrp.classList = 'btn-group inline pull-right';\n button = document.createElement('button');\n button.classList = 'btn btn-mini btn-primary';\n button.href = '#';\n button.title = 'Stop Interaction';\n button.innerHTML = '';\n button.addEventListener('click', function (_evt) {\n fig.handle_close(fig, {});\n });\n button.addEventListener(\n 'mouseover',\n on_mouseover_closure('Stop Interaction')\n );\n buttongrp.appendChild(button);\n var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n titlebar.insertBefore(buttongrp, titlebar.firstChild);\n};\n\nmpl.figure.prototype._remove_fig_handler = function (event) {\n var fig = event.data.fig;\n if (event.target !== this) {\n // Ignore bubbled events from children.\n return;\n }\n fig.close_ws(fig, {});\n};\n\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.figure.prototype._canvas_extra_style = function (el) {\n // this is important to make the div 'focusable\n el.setAttribute('tabindex', 0);\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n } else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n};\n\nmpl.figure.prototype._key_event_extra = function (event, _name) {\n // Check for shift+enter\n if (event.shiftKey && event.which === 13) {\n this.canvas_div.blur();\n // select the cell after this one\n var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n IPython.notebook.select(index + 1);\n }\n};\n\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.find_output_cell = function (html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i = 0; i < ncells; i++) {\n var cell = cells[i];\n if (cell.cell_type === 'code') {\n for (var j = 0; j < cell.output_area.outputs.length; j++) {\n var data = cell.output_area.outputs[j];\n if (data.data) {\n // IPython >= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] === html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n};\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "/* Put everything inside the global mpl namespace */\n/* global mpl */\nwindow.mpl = {};\n\nmpl.get_websocket_type = function () {\n if (typeof WebSocket !== 'undefined') {\n return WebSocket;\n } else if (typeof MozWebSocket !== 'undefined') {\n return MozWebSocket;\n } else {\n alert(\n 'Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.'\n );\n }\n};\n\nmpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = this.ws.binaryType !== undefined;\n\n if (!this.supports_binary) {\n var warnings = document.getElementById('mpl-warnings');\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent =\n 'This browser does not support binary websocket messages. ' +\n 'Performance may be slow.';\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = document.createElement('div');\n this.root.setAttribute('style', 'display: inline-block');\n this._root_extra_style(this.root);\n\n parent_element.appendChild(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message('supports_binary', { value: fig.supports_binary });\n fig.send_message('send_image_mode', {});\n if (fig.ratio !== 1) {\n fig.send_message('set_device_pixel_ratio', {\n device_pixel_ratio: fig.ratio,\n });\n }\n fig.send_message('refresh', {});\n };\n\n this.imageObj.onload = function () {\n if (fig.image_mode === 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function () {\n fig.ws.close();\n };\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n};\n\nmpl.figure.prototype._init_header = function () {\n var titlebar = document.createElement('div');\n titlebar.classList =\n 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n var titletext = document.createElement('div');\n titletext.classList = 'ui-dialog-title';\n titletext.setAttribute(\n 'style',\n 'width: 100%; text-align: center; padding: 3px;'\n );\n titlebar.appendChild(titletext);\n this.root.appendChild(titlebar);\n this.header = titletext;\n};\n\nmpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n\nmpl.figure.prototype._init_canvas = function () {\n var fig = this;\n\n var canvas_div = (this.canvas_div = document.createElement('div'));\n canvas_div.setAttribute('tabindex', '0');\n canvas_div.setAttribute(\n 'style',\n 'border: 1px solid #ddd;' +\n 'box-sizing: content-box;' +\n 'clear: both;' +\n 'min-height: 1px;' +\n 'min-width: 1px;' +\n 'outline: 0;' +\n 'overflow: hidden;' +\n 'position: relative;' +\n 'resize: both;' +\n 'z-index: 2;'\n );\n\n function on_keyboard_event_closure(name) {\n return function (event) {\n return fig.key_event(event, name);\n };\n }\n\n canvas_div.addEventListener(\n 'keydown',\n on_keyboard_event_closure('key_press')\n );\n canvas_div.addEventListener(\n 'keyup',\n on_keyboard_event_closure('key_release')\n );\n\n this._canvas_extra_style(canvas_div);\n this.root.appendChild(canvas_div);\n\n var canvas = (this.canvas = document.createElement('canvas'));\n canvas.classList.add('mpl-canvas');\n canvas.setAttribute(\n 'style',\n 'box-sizing: content-box;' +\n 'pointer-events: none;' +\n 'position: relative;' +\n 'z-index: 0;'\n );\n\n this.context = canvas.getContext('2d');\n\n var backingStore =\n this.context.backingStorePixelRatio ||\n this.context.webkitBackingStorePixelRatio ||\n this.context.mozBackingStorePixelRatio ||\n this.context.msBackingStorePixelRatio ||\n this.context.oBackingStorePixelRatio ||\n this.context.backingStorePixelRatio ||\n 1;\n\n this.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n 'canvas'\n ));\n rubberband_canvas.setAttribute(\n 'style',\n 'box-sizing: content-box;' +\n 'left: 0;' +\n 'pointer-events: none;' +\n 'position: absolute;' +\n 'top: 0;' +\n 'z-index: 1;'\n );\n\n // Apply a ponyfill if ResizeObserver is not implemented by browser.\n if (this.ResizeObserver === undefined) {\n if (window.ResizeObserver !== undefined) {\n this.ResizeObserver = window.ResizeObserver;\n } else {\n var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n this.ResizeObserver = obs.ResizeObserver;\n }\n }\n\n this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n var nentries = entries.length;\n for (var i = 0; i < nentries; i++) {\n var entry = entries[i];\n var width, height;\n if (entry.contentBoxSize) {\n if (entry.contentBoxSize instanceof Array) {\n // Chrome 84 implements new version of spec.\n width = entry.contentBoxSize[0].inlineSize;\n height = entry.contentBoxSize[0].blockSize;\n } else {\n // Firefox implements old version of spec.\n width = entry.contentBoxSize.inlineSize;\n height = entry.contentBoxSize.blockSize;\n }\n } else {\n // Chrome <84 implements even older version of spec.\n width = entry.contentRect.width;\n height = entry.contentRect.height;\n }\n\n // Keep the size of the canvas and rubber band canvas in sync with\n // the canvas container.\n if (entry.devicePixelContentBoxSize) {\n // Chrome 84 implements new version of spec.\n canvas.setAttribute(\n 'width',\n entry.devicePixelContentBoxSize[0].inlineSize\n );\n canvas.setAttribute(\n 'height',\n entry.devicePixelContentBoxSize[0].blockSize\n );\n } else {\n canvas.setAttribute('width', width * fig.ratio);\n canvas.setAttribute('height', height * fig.ratio);\n }\n /* This rescales the canvas back to display pixels, so that it\n * appears correct on HiDPI screens. */\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n\n rubberband_canvas.setAttribute('width', width);\n rubberband_canvas.setAttribute('height', height);\n\n // And update the size in Python. We ignore the initial 0/0 size\n // that occurs as the element is placed into the DOM, which should\n // otherwise not happen due to the minimum size styling.\n if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n fig.request_resize(width, height);\n }\n }\n });\n this.resizeObserverInstance.observe(canvas_div);\n\n function on_mouse_event_closure(name) {\n /* User Agent sniffing is bad, but WebKit is busted:\n * https://bugs.webkit.org/show_bug.cgi?id=144526\n * https://bugs.webkit.org/show_bug.cgi?id=181818\n * The worst that happens here is that they get an extra browser\n * selection when dragging, if this check fails to catch them.\n */\n var UA = navigator.userAgent;\n var isWebKit = /AppleWebKit/.test(UA) && !/Chrome/.test(UA);\n if(isWebKit) {\n return function (event) {\n /* This prevents the web browser from automatically changing to\n * the text insertion cursor when the button is pressed. We\n * want to control all of the cursor setting manually through\n * the 'cursor' event from matplotlib */\n event.preventDefault()\n return fig.mouse_event(event, name);\n };\n } else {\n return function (event) {\n return fig.mouse_event(event, name);\n };\n }\n }\n\n canvas_div.addEventListener(\n 'mousedown',\n on_mouse_event_closure('button_press')\n );\n canvas_div.addEventListener(\n 'mouseup',\n on_mouse_event_closure('button_release')\n );\n canvas_div.addEventListener(\n 'dblclick',\n on_mouse_event_closure('dblclick')\n );\n // Throttle sequential mouse events to 1 every 20ms.\n canvas_div.addEventListener(\n 'mousemove',\n on_mouse_event_closure('motion_notify')\n );\n\n canvas_div.addEventListener(\n 'mouseenter',\n on_mouse_event_closure('figure_enter')\n );\n canvas_div.addEventListener(\n 'mouseleave',\n on_mouse_event_closure('figure_leave')\n );\n\n canvas_div.addEventListener('wheel', function (event) {\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n on_mouse_event_closure('scroll')(event);\n });\n\n canvas_div.appendChild(canvas);\n canvas_div.appendChild(rubberband_canvas);\n\n this.rubberband_context = rubberband_canvas.getContext('2d');\n this.rubberband_context.strokeStyle = '#000000';\n\n this._resize_canvas = function (width, height, forward) {\n if (forward) {\n canvas_div.style.width = width + 'px';\n canvas_div.style.height = height + 'px';\n }\n };\n\n // Disable right mouse context menu.\n canvas_div.addEventListener('contextmenu', function (_e) {\n event.preventDefault();\n return false;\n });\n\n function set_focus() {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n};\n\nmpl.figure.prototype._init_toolbar = function () {\n var fig = this;\n\n var toolbar = document.createElement('div');\n toolbar.classList = 'mpl-toolbar';\n this.root.appendChild(toolbar);\n\n function on_click_closure(name) {\n return function (_event) {\n return fig.toolbar_button_onclick(name);\n };\n }\n\n function on_mouseover_closure(tooltip) {\n return function (event) {\n if (!event.currentTarget.disabled) {\n return fig.toolbar_button_onmouseover(tooltip);\n }\n };\n }\n\n fig.buttons = {};\n var buttonGroup = document.createElement('div');\n buttonGroup.classList = 'mpl-button-group';\n for (var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n /* Instead of a spacer, we start a new button group. */\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n buttonGroup = document.createElement('div');\n buttonGroup.classList = 'mpl-button-group';\n continue;\n }\n\n var button = (fig.buttons[name] = document.createElement('button'));\n button.classList = 'mpl-widget';\n button.setAttribute('role', 'button');\n button.setAttribute('aria-disabled', 'false');\n button.addEventListener('click', on_click_closure(method_name));\n button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n\n var icon_img = document.createElement('img');\n icon_img.src = '_images/' + image + '.png';\n icon_img.srcset = '_images/' + image + '_large.png 2x';\n icon_img.alt = tooltip;\n button.appendChild(icon_img);\n\n buttonGroup.appendChild(button);\n }\n\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n\n var fmt_picker = document.createElement('select');\n fmt_picker.classList = 'mpl-widget';\n toolbar.appendChild(fmt_picker);\n this.format_dropdown = fmt_picker;\n\n for (var ind in mpl.extensions) {\n var fmt = mpl.extensions[ind];\n var option = document.createElement('option');\n option.selected = fmt === mpl.default_extension;\n option.innerHTML = fmt;\n fmt_picker.appendChild(option);\n }\n\n var status_bar = document.createElement('span');\n status_bar.classList = 'mpl-message';\n toolbar.appendChild(status_bar);\n this.message = status_bar;\n};\n\nmpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n // which will in turn request a refresh of the image.\n this.send_message('resize', { width: x_pixels, height: y_pixels });\n};\n\nmpl.figure.prototype.send_message = function (type, properties) {\n properties['type'] = type;\n properties['figure_id'] = this.id;\n this.ws.send(JSON.stringify(properties));\n};\n\nmpl.figure.prototype.send_draw_message = function () {\n if (!this.waiting) {\n this.waiting = true;\n this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n }\n};\n\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n var format_dropdown = fig.format_dropdown;\n var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n fig.ondownload(fig, format);\n};\n\nmpl.figure.prototype.handle_resize = function (fig, msg) {\n var size = msg['size'];\n if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n fig._resize_canvas(size[0], size[1], msg['forward']);\n fig.send_message('refresh', {});\n }\n};\n\nmpl.figure.prototype.handle_rubberband = function (fig, msg) {\n var x0 = msg['x0'] / fig.ratio;\n var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n var x1 = msg['x1'] / fig.ratio;\n var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n x0 = Math.floor(x0) + 0.5;\n y0 = Math.floor(y0) + 0.5;\n x1 = Math.floor(x1) + 0.5;\n y1 = Math.floor(y1) + 0.5;\n var min_x = Math.min(x0, x1);\n var min_y = Math.min(y0, y1);\n var width = Math.abs(x1 - x0);\n var height = Math.abs(y1 - y0);\n\n fig.rubberband_context.clearRect(\n 0,\n 0,\n fig.canvas.width / fig.ratio,\n fig.canvas.height / fig.ratio\n );\n\n fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n};\n\nmpl.figure.prototype.handle_figure_label = function (fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n};\n\nmpl.figure.prototype.handle_cursor = function (fig, msg) {\n fig.canvas_div.style.cursor = msg['cursor'];\n};\n\nmpl.figure.prototype.handle_message = function (fig, msg) {\n fig.message.textContent = msg['message'];\n};\n\nmpl.figure.prototype.handle_draw = function (fig, _msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n};\n\nmpl.figure.prototype.handle_image_mode = function (fig, msg) {\n fig.image_mode = msg['mode'];\n};\n\nmpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n for (var key in msg) {\n if (!(key in fig.buttons)) {\n continue;\n }\n fig.buttons[key].disabled = !msg[key];\n fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n }\n};\n\nmpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n if (msg['mode'] === 'PAN') {\n fig.buttons['Pan'].classList.add('active');\n fig.buttons['Zoom'].classList.remove('active');\n } else if (msg['mode'] === 'ZOOM') {\n fig.buttons['Pan'].classList.remove('active');\n fig.buttons['Zoom'].classList.add('active');\n } else {\n fig.buttons['Pan'].classList.remove('active');\n fig.buttons['Zoom'].classList.remove('active');\n }\n};\n\nmpl.figure.prototype.updated_canvas_event = function () {\n // Called whenever the canvas gets updated.\n this.send_message('ack', {});\n};\n\n// A function to construct a web socket function for onmessage handling.\n// Called in the figure constructor.\nmpl.figure.prototype._make_on_message_function = function (fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n var img = evt.data;\n if (img.type !== 'image/png') {\n /* FIXME: We get \"Resource interpreted as Image but\n * transferred with MIME type text/plain:\" errors on\n * Chrome. But how to set the MIME type? It doesn't seem\n * to be part of the websocket stream */\n img.type = 'image/png';\n }\n\n /* Free the memory for the previous frames */\n if (fig.imageObj.src) {\n (window.URL || window.webkitURL).revokeObjectURL(\n fig.imageObj.src\n );\n }\n\n fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n img\n );\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n } else if (\n typeof evt.data === 'string' &&\n evt.data.slice(0, 21) === 'data:image/png;base64'\n ) {\n fig.imageObj.src = evt.data;\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n }\n\n var msg = JSON.parse(evt.data);\n var msg_type = msg['type'];\n\n // Call the \"handle_{type}\" callback, which takes\n // the figure and JSON message as its only arguments.\n try {\n var callback = fig['handle_' + msg_type];\n } catch (e) {\n console.log(\n \"No handler for the '\" + msg_type + \"' message type: \",\n msg\n );\n return;\n }\n\n if (callback) {\n try {\n // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n callback(fig, msg);\n } catch (e) {\n console.log(\n \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n e,\n e.stack,\n msg\n );\n }\n }\n };\n};\n\nfunction getModifiers(event) {\n var mods = [];\n if (event.ctrlKey) {\n mods.push('ctrl');\n }\n if (event.altKey) {\n mods.push('alt');\n }\n if (event.shiftKey) {\n mods.push('shift');\n }\n if (event.metaKey) {\n mods.push('meta');\n }\n return mods;\n}\n\n/*\n * return a copy of an object with only non-object keys\n * we need this to avoid circular references\n * https://stackoverflow.com/a/24161582/3208463\n */\nfunction simpleKeys(original) {\n return Object.keys(original).reduce(function (obj, key) {\n if (typeof original[key] !== 'object') {\n obj[key] = original[key];\n }\n return obj;\n }, {});\n}\n\nmpl.figure.prototype.mouse_event = function (event, name) {\n if (name === 'button_press') {\n this.canvas.focus();\n this.canvas_div.focus();\n }\n\n // from https://stackoverflow.com/q/1114465\n var boundingRect = this.canvas.getBoundingClientRect();\n var x = (event.clientX - boundingRect.left) * this.ratio;\n var y = (event.clientY - boundingRect.top) * this.ratio;\n\n this.send_message(name, {\n x: x,\n y: y,\n button: event.button,\n step: event.step,\n modifiers: getModifiers(event),\n guiEvent: simpleKeys(event),\n });\n\n return false;\n};\n\nmpl.figure.prototype._key_event_extra = function (_event, _name) {\n // Handle any extra behaviour associated with a key event\n};\n\nmpl.figure.prototype.key_event = function (event, name) {\n // Prevent repeat events\n if (name === 'key_press') {\n if (event.key === this._key) {\n return;\n } else {\n this._key = event.key;\n }\n }\n if (name === 'key_release') {\n this._key = null;\n }\n\n var value = '';\n if (event.ctrlKey && event.key !== 'Control') {\n value += 'ctrl+';\n }\n else if (event.altKey && event.key !== 'Alt') {\n value += 'alt+';\n }\n else if (event.shiftKey && event.key !== 'Shift') {\n value += 'shift+';\n }\n\n value += 'k' + event.key;\n\n this._key_event_extra(event, name);\n\n this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n return false;\n};\n\nmpl.figure.prototype.toolbar_button_onclick = function (name) {\n if (name === 'download') {\n this.handle_save(this, null);\n } else {\n this.send_message('toolbar_button', { name: name });\n }\n};\n\nmpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n this.message.textContent = tooltip;\n};\n\n///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n// prettier-ignore\nvar _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\nmpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\", \"webp\"];\n\nmpl.default_extension = \"png\";/* global mpl */\n\nvar comm_websocket_adapter = function (comm) {\n // Create a \"websocket\"-like object which calls the given IPython comm\n // object with the appropriate methods. Currently this is a non binary\n // socket, so there is still some room for performance tuning.\n var ws = {};\n\n ws.binaryType = comm.kernel.ws.binaryType;\n ws.readyState = comm.kernel.ws.readyState;\n function updateReadyState(_event) {\n if (comm.kernel.ws) {\n ws.readyState = comm.kernel.ws.readyState;\n } else {\n ws.readyState = 3; // Closed state.\n }\n }\n comm.kernel.ws.addEventListener('open', updateReadyState);\n comm.kernel.ws.addEventListener('close', updateReadyState);\n comm.kernel.ws.addEventListener('error', updateReadyState);\n\n ws.close = function () {\n comm.close();\n };\n ws.send = function (m) {\n //console.log('sending', m);\n comm.send(m);\n };\n // Register the callback with on_msg.\n comm.on_msg(function (msg) {\n //console.log('receiving', msg['content']['data'], msg);\n var data = msg['content']['data'];\n if (data['blob'] !== undefined) {\n data = {\n data: new Blob(msg['buffers'], { type: data['blob'] }),\n };\n }\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(data);\n });\n return ws;\n};\n\nmpl.mpl_figure_comm = function (comm, msg) {\n // This is the function which gets called when the mpl process\n // starts-up an IPython Comm through the \"matplotlib\" channel.\n\n var id = msg.content.data.id;\n // Get hold of the div created by the display call when the Comm\n // socket was opened in Python.\n var element = document.getElementById(id);\n var ws_proxy = comm_websocket_adapter(comm);\n\n function ondownload(figure, _format) {\n window.open(figure.canvas.toDataURL());\n }\n\n var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n\n // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n // web socket which is closed, not our websocket->open comm proxy.\n ws_proxy.onopen();\n\n fig.parent_element = element;\n fig.cell_info = mpl.find_output_cell(\"
\");\n if (!fig.cell_info) {\n console.error('Failed to find cell for figure', id, fig);\n return;\n }\n fig.cell_info[0].output_area.element.on(\n 'cleared',\n { fig: fig },\n fig._remove_fig_handler\n );\n};\n\nmpl.figure.prototype.handle_close = function (fig, msg) {\n var width = fig.canvas.width / fig.ratio;\n fig.cell_info[0].output_area.element.off(\n 'cleared',\n fig._remove_fig_handler\n );\n fig.resizeObserverInstance.unobserve(fig.canvas_div);\n\n // Update the output cell to use the data from the current canvas.\n fig.push_to_output();\n var dataURL = fig.canvas.toDataURL();\n // Re-enable the keyboard manager in IPython - without this line, in FF,\n // the notebook keyboard shortcuts fail.\n IPython.keyboard_manager.enable();\n fig.parent_element.innerHTML =\n '';\n fig.close_ws(fig, msg);\n};\n\nmpl.figure.prototype.close_ws = function (fig, msg) {\n fig.send_message('closing', msg);\n // fig.ws.close()\n};\n\nmpl.figure.prototype.push_to_output = function (_remove_interactive) {\n // Turn the data on the canvas into data in the output cell.\n var width = this.canvas.width / this.ratio;\n var dataURL = this.canvas.toDataURL();\n this.cell_info[1]['text/html'] =\n '';\n};\n\nmpl.figure.prototype.updated_canvas_event = function () {\n // Tell IPython that the notebook contents must change.\n IPython.notebook.set_dirty(true);\n this.send_message('ack', {});\n var fig = this;\n // Wait a second, then push the new image to the DOM so\n // that it is saved nicely (might be nice to debounce this).\n setTimeout(function () {\n fig.push_to_output();\n }, 1000);\n};\n\nmpl.figure.prototype._init_toolbar = function () {\n var fig = this;\n\n var toolbar = document.createElement('div');\n toolbar.classList = 'btn-toolbar';\n this.root.appendChild(toolbar);\n\n function on_click_closure(name) {\n return function (_event) {\n return fig.toolbar_button_onclick(name);\n };\n }\n\n function on_mouseover_closure(tooltip) {\n return function (event) {\n if (!event.currentTarget.disabled) {\n return fig.toolbar_button_onmouseover(tooltip);\n }\n };\n }\n\n fig.buttons = {};\n var buttonGroup = document.createElement('div');\n buttonGroup.classList = 'btn-group';\n var button;\n for (var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n /* Instead of a spacer, we start a new button group. */\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n buttonGroup = document.createElement('div');\n buttonGroup.classList = 'btn-group';\n continue;\n }\n\n button = fig.buttons[name] = document.createElement('button');\n button.classList = 'btn btn-default';\n button.href = '#';\n button.title = name;\n button.innerHTML = '';\n button.addEventListener('click', on_click_closure(method_name));\n button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n buttonGroup.appendChild(button);\n }\n\n if (buttonGroup.hasChildNodes()) {\n toolbar.appendChild(buttonGroup);\n }\n\n // Add the status bar.\n var status_bar = document.createElement('span');\n status_bar.classList = 'mpl-message pull-right';\n toolbar.appendChild(status_bar);\n this.message = status_bar;\n\n // Add the close button to the window.\n var buttongrp = document.createElement('div');\n buttongrp.classList = 'btn-group inline pull-right';\n button = document.createElement('button');\n button.classList = 'btn btn-mini btn-primary';\n button.href = '#';\n button.title = 'Stop Interaction';\n button.innerHTML = '';\n button.addEventListener('click', function (_evt) {\n fig.handle_close(fig, {});\n });\n button.addEventListener(\n 'mouseover',\n on_mouseover_closure('Stop Interaction')\n );\n buttongrp.appendChild(button);\n var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n titlebar.insertBefore(buttongrp, titlebar.firstChild);\n};\n\nmpl.figure.prototype._remove_fig_handler = function (event) {\n var fig = event.data.fig;\n if (event.target !== this) {\n // Ignore bubbled events from children.\n return;\n }\n fig.close_ws(fig, {});\n};\n\nmpl.figure.prototype._root_extra_style = function (el) {\n el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n};\n\nmpl.figure.prototype._canvas_extra_style = function (el) {\n // this is important to make the div 'focusable\n el.setAttribute('tabindex', 0);\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n } else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n};\n\nmpl.figure.prototype._key_event_extra = function (event, _name) {\n // Check for shift+enter\n if (event.shiftKey && event.which === 13) {\n this.canvas_div.blur();\n // select the cell after this one\n var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n IPython.notebook.select(index + 1);\n }\n};\n\nmpl.figure.prototype.handle_save = function (fig, _msg) {\n fig.ondownload(fig, null);\n};\n\nmpl.find_output_cell = function (html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i = 0; i < ncells; i++) {\n var cell = cells[i];\n if (cell.cell_type === 'code') {\n for (var j = 0; j < cell.output_area.outputs.length; j++) {\n var data = cell.output_area.outputs[j];\n if (data.data) {\n // IPython >= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] === html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n};\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel !== null) {\n IPython.notebook.kernel.comm_manager.register_target(\n 'matplotlib',\n mpl.mpl_figure_comm\n );\n}\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "class PlotStrategy(bt.Strategy):\n", + " params = (\n", + " ('rsi_period', 14),\n", + " ('bb_period', 20),\n", + " ('bb_dev', 2),\n", + " )\n", + "\n", + " def __init__(self):\n", + " self.rsi = bt.indicators.RelativeStrengthIndex(period=self.params.rsi_period)\n", + " self.bbands = bt.indicators.BollingerBands(period=self.params.bb_period, devfactor=self.params.bb_dev)\n", + " self.data_close = self.data.close\n", + "\n", + " def next(self):\n", + " pass\n", + "\n", + " def plot(self):\n", + " plt.figure(figsize=(14, 7))\n", + " plt.plot(self.data.datetime.array, self.data_close.array, label='Close Price')\n", + " plt.plot(self.data.datetime.array, self.bbands.lines.bot.array, linestyle='dotted', label='Lower Bollinger Band')\n", + " plt.plot(self.data.datetime.array, self.bbands.lines.mid.array, linestyle='dotted', label='Middle Bollinger Band')\n", + " plt.plot(self.data.datetime.array, self.bbands.lines.top.array, linestyle='dotted', label='Upper Bollinger Band')\n", + " plt.title('BTC/USDT with Bollinger Bands')\n", + " plt.xlabel('Date')\n", + " plt.ylabel('Price (USDT)')\n", + " plt.legend()\n", + " plt.show()\n", + "\n", + " plt.figure(figsize=(14, 3))\n", + " plt.plot(self.data.datetime.array, self.rsi.array, label='RSI')\n", + " plt.axhline(30, linestyle='dotted', color='red', label='Oversold')\n", + " plt.axhline(70, linestyle='dotted', color='red', label='Overbought')\n", + " plt.title('RSI')\n", + " plt.xlabel('Date')\n", + " plt.ylabel('RSI')\n", + " plt.legend()\n", + " plt.show()\n", + "\n", + "# Running the strategy for plotting\n", + "data_feed = bt.feeds.PandasData(dataname=data)\n", + "\n", + "cerebro = bt.Cerebro()\n", + "cerebro.addstrategy(PlotStrategy)\n", + "cerebro.adddata(data_feed)\n", + "\n", + "cerebro.run()[0].plot()\n" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/backtesting_yfinance.ipynb b/notebooks/backtesting_yfinance.ipynb new file mode 100644 index 0000000..37c4383 --- /dev/null +++ b/notebooks/backtesting_yfinance.ipynb @@ -0,0 +1,420 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exploring data from Yahoo finance" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#import sys\n", + "#import os\n", + "#sys.path.append('../')\n", + "\n", + "#import yfinance as yf\n", + "#import backtrader as bt\n", + "#import pandas as pd\n", + "#from datetime import datetime" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import (absolute_import, division, print_function,\n", + " unicode_literals)\n", + "\n", + "import datetime \n", + "import os.path \n", + "import sys # To find out the script name (in argv[0])\n", + "import pandas as pd\n", + "\n", + "# Import the backtrader platform\n", + "import backtrader as bt\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "modpath = os.path.dirname(os.path.abspath(sys.argv[0]))\n", + "datapath = os.path.join(modpath, '../datas/yfinance')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateOpenHighLowCloseAdj CloseVolume
02023-06-2026841.66406328388.96875026668.79101628327.48828128327.48828122211859147
12023-06-2128311.31054730737.33007828283.41015630027.29687530027.29687533346760979
22023-06-2229995.93554730495.99804729679.15820329912.28125029912.28125020653160491
32023-06-2329896.38281331389.53906329845.21484430695.46875030695.46875024115570085
42023-06-2430708.73828130804.14843830290.14648430548.69531330548.69531312147822496
\n", + "
" + ], + "text/plain": [ + " Date Open High Low Close \\\n", + "0 2023-06-20 26841.664063 28388.968750 26668.791016 28327.488281 \n", + "1 2023-06-21 28311.310547 30737.330078 28283.410156 30027.296875 \n", + "2 2023-06-22 29995.935547 30495.998047 29679.158203 29912.281250 \n", + "3 2023-06-23 29896.382813 31389.539063 29845.214844 30695.468750 \n", + "4 2023-06-24 30708.738281 30804.148438 30290.146484 30548.695313 \n", + "\n", + " Adj Close Volume \n", + "0 28327.488281 22211859147 \n", + "1 30027.296875 33346760979 \n", + "2 29912.281250 20653160491 \n", + "3 30695.468750 24115570085 \n", + "4 30548.695313 12147822496 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "btc = pd.read_csv('../datas/yfinance/BTC-USD.csv')\n", + "btc.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Date datetime64[ns]\n", + "Open float64\n", + "High float64\n", + "Low float64\n", + "Close float64\n", + "Adj Close float64\n", + "Volume int64\n", + "dtype: object" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "btc['Date'] = pd.to_datetime(btc['Date'])\n", + "btc.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(Timestamp('2023-06-20 00:00:00'), Timestamp('2024-06-20 00:00:00'))" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "start_date = btc['Date'].min()\n", + "end_date = btc['Date'].max()\n", + "\n", + "start_date, end_date" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initial plot" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "from mplfinance.original_flavor import candlestick_ohlc\n", + "import matplotlib.dates as mdates\n", + "\n", + "# Convert dates to Matplotlib date format\n", + "btc['Date'] = btc['Date'].apply(mdates.date2num)\n", + "ohlc = btc[['Date', 'Open', 'High', 'Low', 'Close', 'Volume']].values.tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmQAAAH7CAYAAABiyYO3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACE40lEQVR4nO3deVxUVf8H8M8sMMMOiQqCoyCpqbhhGpZaZFJp5VKZGpraImmlPllp/mwz7anHysrosU0f1BZbzUwzUVvAVNyXUEQdRFBRWRRmhpk5vz/GGRlZvCBwB+bzfr14BfeeuXPmy8h8O+fc71EIIQSIiIiISDZKuTtARERE5O6YkBERERHJjAkZERERkcyYkBERERHJjAkZERERkcyYkBERERHJjAkZERERkcyYkBERERHJjAkZERERkcyYkBERAdi0aRMUCgU2bdrkOPbII4+gbdu2Dd6Xl19+GQqFosaPa9u2LYYMGVIPPXK2ZMkSKBQKbN++vd6fi8hdMCEjcmH2Dz6tVoucnJwK52+99VZ06dIFALBjxw4oFArMnj27yusdPnwYCoUC06dPB3D5g9/+5e3tDZ1Oh3vuuQeff/45jEZjldeyWCxo1aoVFAoFfvnllxq/tlOnTuHZZ59Fx44d4e3tDR8fH8TExGDu3LkoKCio8fUam5KSErz88stOCaAr+P7773HXXXchODgYnp6eaNWqFR588EGkpKTI1qcPP/wQS5Yske35iRoCEzKiRsBoNOKNN96otk3Pnj3RsWNHfPHFF1W2WbFiBQDg4YcfdjqelJSE5ORkvP/++3j00Udx7tw5TJgwAb1790Z2dnal10pJSUFubi7atm2L5cuX1+j1bNu2DV26dMGiRYvQr18/vP3221iwYAF69OiBN954Aw8++GCNrtcYlZSU4JVXXqk0IZs9ezZKS0sbtD9CCIwfPx7Dhw/HqVOnMH36dHz00UeYPHkysrKycPvttyM1NbVB+2THhIzcgVruDhDR1XXv3h0ff/wxZs6ciVatWlXZbsyYMfi///s/bNmyBTfddFOF81988QU6duyInj17Oh2///77ERwc7Ph5zpw5WL58OcaOHYsHHngAW7ZsqXCtZcuWoWfPnhg3bhxmzZqFixcvwsfH56qvpaCgAMOGDYNKpcLOnTvRsWNHp/Ovv/46Pv7446tepylTq9VQqxv2z/OCBQuwZMkSTJ06FW+//bbTlOmLL76I5OTkBu9TSUkJvL29G/Q5ieTCETKiRmDWrFmwWCxXHSUbM2YMgMsjYeWlp6cjIyPD0eZqxowZg0cffRR///031q9f73SutLQU33//PR566CE8+OCDKC0txY8//ijpuv/973+Rk5ODt99+u0IyBgAtW7Z0mnb98ccfMXjwYLRq1QoajQbt2rXDa6+9BovF4vQ4+/TtgQMHcNttt8Hb2xthYWF48803KzzHiRMnMHToUPj4+KBFixaYNm1atdOz5VmtVrz77rvo3LkztFotWrZsiSeeeALnz593ard9+3bEx8cjODgYXl5eiIiIwIQJEwAAx44dQ/PmzQEAr7zyimPK+OWXXwZQ9RqyZcuWoXfv3vD29kZQUBD69++PX3/9tdr+Ll26FGq1GjNmzKiyTWlpKebPn4+OHTviP//5T6XPnZCQgN69ezsdMxqNmD59Opo3bw4fHx8MGzYMZ86ccWpT099feno6+vfvD29vb8yaNQtt27bF/v37sXnzZkecbr311mpfM1FjxISMqBGIiIjA2LFj8fHHH+PkyZPVtuvbty++/vrrCh949iRt9OjRkp83ISEBACp86K9atQoXLlzAQw89hJCQENx6662Spy1XrVoFLy8v3H///ZLaL1myBL6+vpg+fToWLlyImJgYzJkzBy+88EKFtufPn8edd96Jbt26YcGCBejYsSOef/55pzVupaWluP3227Fu3TpMmTIFL774Iv744w8899xzkvrzxBNPYMaMGbj55puxcOFCjB8/HsuXL0d8fDzKysoAAKdPn8agQYNw7NgxvPDCC3j//fcxZswYx0hj8+bNkZSUBAAYNmwYkpOTkZycjOHDh1f5vK+88goSEhLg4eGBV199Fa+88gpat25d7dquxYsXY/z48XjhhRfw1ltvVdnuzz//xLlz5zB69GioVCpJcQCAp556Crt378ZLL72ExMRE/PTTT5gyZYpTm5r8/s6ePYu77roL3bt3x7vvvovbbrsN7777LsLDw9GxY0dHnF588UXJfSRqNAQRuazPP/9cABDbtm0TR44cEWq1Wjz99NOO8wMGDBCdO3d2esyiRYsEALFu3TrHMYvFIsLCwkRsbKxT25deekkAEGfOnKn0+c+fPy8AiGHDhjkdHzJkiLj55psdPy9evFio1Wpx+vTpq76moKAg0a1bt6u2syspKalw7IknnhDe3t7CYDA4jg0YMEAAEP/73/8cx4xGowgJCREjRoxwHHv33XcFAPH11187jl28eFFERUUJAGLjxo2O4+PGjRNt2rRx/PzHH38IAGL58uVO/Vm7dq3T8e+//97xe6vKmTNnBADx0ksvVThn/73YHT58WCiVSjFs2DBhsVic2lqtVsf3bdq0EYMHDxZCCLFw4UKhUCjEa6+9VmUf7BYuXCgAiO+///6qbYW4/L4cOHCg0/NPmzZNqFQqUVBQ4DhW09/fRx99VKF9586dxYABAyT1jaix4ggZUSMRGRmJhIQELF68GLm5uVW2GzlyJDw8PJymLTdv3oycnBzJ05V2vr6+AIDi4mLHsbNnz2LdunUYNWqU49iIESOgUCjw9ddfX/WaRUVF8PPzk9wHLy8vx/fFxcXIz89Hv379UFJSgn/++adCf8vfsODp6YnevXsjKyvLcWzNmjUIDQ11GqHz9vbG448/ftW+rFy5EgEBAbjjjjuQn5/v+IqJiYGvry82btwIAAgMDAQArF692jFqdi1++OEHWK1WzJkzB0ql85/tyqYX33zzTTzzzDP497//Xe1dt3ZFRUUAUKPfCwA8/vjjTs/fr18/WCwWHD9+3HGsJr8/jUaD8ePH16gPRE0FEzKiRmT27Nkwm83VriVr1qwZ4uPj8f3338NgMACwTVeq1eoa37144cIFAM4f1F999RXKysrQo0cPZGZmIjMzE+fOnUOfPn0kTVv6+/s7JXhXs3//fgwbNgwBAQHw9/dH8+bNHUlXYWGhU9vw8PAKCUpQUJDT+q7jx48jKiqqQrsOHTpctS+HDx9GYWEhWrRogebNmzt9XbhwAadPnwYADBgwACNGjMArr7yC4OBg3HfffVctI1KdI0eOQKlUolOnTldtu3nzZjz//PN4/vnnq103Vp6/vz8A1Oj3AgA6nc7p56CgIABwindNfn9hYWHw9PSsUR+ImgreZUnUiERGRuLhhx/G4sWLK12DY/fwww9j9erVWL16Ne699158++23GDRokGMhuVT79u0DAERFRTmO2ZOum2++udLHZGVlITIyssprduzYEbt27YLJZLrqh29BQQEGDBgAf39/vPrqq2jXrh20Wi127NiB559/Hlar1al9VeufhBDVPo9UVqsVLVq0qDLxtMdXoVDgm2++wZYtW/DTTz9h3bp1mDBhAhYsWIAtW7Y4Rh7rQ+fOnVFQUIDk5GQ88cQTiIiIuOpj7DdX7N27F0OHDpX8XFeLd01/f+VH04jcDRMyokZm9uzZWLZsGf79739X2ebee++Fn58fVqxYAQ8PD5w/f77G05UAkJycDACIj48HABw9ehSpqamYMmUKBgwY4NTWarUiISEBK1asqHaa7J577kFaWhq+/fZbp2nPymzatAlnz57Fd999h/79+zuOHz16tMavxa5NmzbYt28fhBBOo2QZGRlXfWy7du3w22+/4eabb5aUPNx000246aab8Prrr2PFihUYM2YMvvzySzz66KM1qsTfrl07WK1WHDhwAN27d6+2bXBwML755hvccsstuP322/Hnn39WWyoFAG655RYEBQXhiy++wKxZs2q0sL86dfX7q82uBUSNDacsiRqZdu3a4eGHH8Z///tf5OXlVdrGy8sLw4YNw5o1a5CUlAQfHx/cd999NXqeFStW4JNPPkFsbCxuv/12AJdHx5577jncf//9Tl8PPvggBgwYcNVpy0mTJiE0NBT/+te/cOjQoQrnT58+jblz5wK4PAJTfoTLZDLhww8/rNFrKe/uu+/GyZMn8c033ziOlZSUYPHixVd97IMPPgiLxYLXXnutwjmz2ezYYeD8+fMVRuXsiZR92tJeX0vKrgRDhw6FUqnEq6++WmFUqbLRv/DwcPz2228oLS3FHXfcgbNnz1Z7fW9vbzz//PM4ePAgnn/++UqvuWzZMmzduvWqfS2vrn5/Pj4+brF7A7k3jpARNUL2Qp0ZGRno3LlzpW0efvhh/O9//8O6deswZsyYaou2fvPNN/D19YXJZEJOTg7WrVuHv/76C926dcPKlSsd7ZYvX47u3bujdevWlV7n3nvvxVNPPYUdO3ZUKD5rFxQUhO+//x533303unfvjocffhgxMTEAbNs/ffHFF4iNjQUA9O3bF0FBQRg3bhyefvppKBQKJCcnX9MU5GOPPYYPPvgAY8eORXp6OkJDQ5GcnCypAOmAAQPwxBNPYP78+di1axcGDRoEDw8PHD58GCtXrsTChQtx//33Y+nSpfjwww8xbNgwtGvXDsXFxfj444/h7++Pu+++G4Atae7UqRO++uortG/fHtdddx26dOni2AqrvKioKLz44ot47bXX0K9fPwwfPhwajQbbtm1Dq1at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qalYunQplixZgjlz5jjaHD16FIMHD8Ztt92GXbt2YerUqXj00Uexbt06R5uvvvoK06dPx0svvYQdO3agW7duiI+Px+nTp+v/xRORS2uMxVNzinPk7gIR1ZDsCdmFCxcwZswYfPzxxwgKunyXU2FhIT799FO8/fbbiIuLQ0xMDD7//HOkpqZiy5YtAIBff/0VBw4cwLJly9C9e3fcddddeO2117Bo0SKYTLZijx999BEiIiKwYMEC3HDDDZgyZQruv/9+vPPOO47nevvtt/HYY49h/Pjx6NSpEz766CN4e3vjs88+a9hgEFHDauTTflWN3pWaSxGc+GwD94aIroXsCdnkyZMxePBgDBw40Ol4eno6ysrKnI537NgROp0OaWlpAIC0tDRER0ejZcuWjjbx8fEoKirC/v37HW2uvHZ8fLzjGiaTCenp6U5tlEolBg4c6GhTGaPRiKKiIqcvInINs1NmS2vYyKvXVzZ6l7BjNv4+vBHev26UoUdEVFuyJmRffvklduzYgfnz51c4l5eXB09PTwQGBjodb9myJfLy8hxtyidj9vP2c9W1KSoqQmlpKfLz82GxWCptY79GZebPn4+AgADHV+vWratsS0QNR1+ox7pM25IEjUpT8yr7jVye8SwAwNOC2u80QEQNTraELDs7G8888wyWL18OrVb65r+uYubMmSgsLHR8ZWdny90lIoJtU20rrACAb0d+2/hqjF0DgwrQl+ahe0RfePS9BRmjUjE6erRbxYCosZItIUtPT8fp06fRs2dPqNVqqNVqbN68Ge+99x7UajVatmwJk8mEgoICp8edOnUKISEhAICQkJAKd13af75aG39/f3h5eSE4OBgqlarSNvZrVEaj0cDf39/pi4jkN++PeY7vQ33dq4q9fX9LBRTw8guCrlMskocny90tIpJAtoTs9ttvx969e7Fr1y7HV69evTBmzBjH9x4eHtiwYYPjMRkZGdDr9YiNjQUAxMbGYu/evU53Q65fvx7+/v7o1KmTo035a9jb2K/h6emJmJgYpzZWqxUbNmxwtCGixiG3OBc7c3dCCSW0aq37TNVd2t/SA7b9LdsGtm30NywQuR3hQgYMGCCeeeYZx8+TJk0SOp1OpKSkiO3bt4vY2FgRGxvrOG82m0WXLl3EoEGDxK5du8TatWtF8+bNxcyZMx1tsrKyhLe3t5gxY4Y4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HqtrTBipCdq9e7fo2rWriIqKEpGRkeL+++8XBw8eFEJcHs2w/5+4wWAQ0dHRQq1WCy8vL5Geni5bv+Wye/du0b59e9GuXTsRHh4uYmJiRFpamlObsrIyIYRtROPuu+8WHh4ewsfHx+3itXv3btGmTRsRFRUlWrVqJUJCQsQ333wjjEajo409VvaRMo1GI/z9/cWOHTvk6rYs+L6Shn+vpGOspJMjVpwcJicnTpxAfHw8br/9dixbtgzPPPMMiouLERsbiy1btkCpVMJiscDDwwNmsxkajQY333wzAgICsH37dvTs2VPul9Cg8vLycM8992Do0KFYs2YN3n//fVx//fXo378/vvzyS0c7tVoNi8UCT09PtGnTBn5+fvj777/dKl5nzpzBAw88gIceegi///47Vq1ahVGjRmHkyJF45513UFxcDOByrNRqNZRKJby9vZGamooePXrI/AoaDt9X0vDvlXSMlXSyxapucklqKjZs2CBiYmLE2bNnHccyMzPFqFGjhLe3t2OUwv5/CAsWLBAKhcLtRi/sdu7cKbp06SKOHj3qOFZSUiKeffZZ4enpKVavXi2EuByvRYsWuW28srKyRIcOHRxrLezeeecdoVAoxPvvvy+EuByrzz77zG1jxfeVNPx7JR1jJZ1csWJCRk6+/fZboVKpRF5entPxnJwccf/994t27doJvV4vhLAtXtyxY4c4dOiQHF11CZs2bRIKhUJkZWUJIS7/A7VarWLy5MnC39/fKT75+fniyJEjsvRVbrt27RKenp5i27ZtQgjnBerz588XarW6QrJWPiFxJ3xfScO/V9IxVtLJFSsmZOQkNzdX9O7dW8ycOVMUFRU5nUtLSxO9evUSy5Ytk6l3rsdsNov+/fuLkSNHOv5vyv7heeLECdG/f3/xyiuvCKvVWuFuQnd07733ij59+ohTp04JIWxroKxWq7BarWLIkCFi7NixwmQyOa0pc0d8X0nDv1fSMVbSyRUrriEjJyEhIRgwYADWrVuH7777DgaDwXHupptugsViwV9//SVjD12LSqXCyJEjcezYMbz33nsoKipy1KIJCwuDr68v/vnnHygUCtbzAfDEE0/Aw8MDM2bMQH5+PtRqtaNuVkhICPLz8+Hh4QFPT0+5uyorvq+k4d8r6Rgr6eSKlfv+S6YK7BXR33jjDUREROCtt97CkiVLnN6M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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Create a figure and axis\n", + "fig, ax = plt.subplots()\n", + "\n", + "# Plot candlestick chart\n", + "candlestick_ohlc(ax, ohlc, width=0.6, colorup='g', colordown='r')\n", + "\n", + "# Format x-axis as dates\n", + "ax.xaxis_date()\n", + "ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))\n", + "\n", + "# Rotate x-axis labels for better readability\n", + "plt.xticks(rotation=45)\n", + "\n", + "# Set labels and title\n", + "plt.xlabel('Date')\n", + "plt.ylabel('Price')\n", + "plt.title('Bitcoin K-line Chart')\n", + "\n", + "# Display the plot\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Stratagys" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### simple stratagy\n", + "Buy at the opening price of each day and sell at the closing price of the day" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Initial Capital: $100000.00\n", + "Final Capital: $0.00\n", + "Returns: -100.00%\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Example Bitcoin K-line data (replace with your actual data)\n", + "btc = pd.DataFrame({\n", + " 'Date': ['2023-06-20', '2023-06-21', '2023-06-22', '2023-06-23', '2023-06-24'],\n", + " 'Open': [26841.664063, 28311.310547, 29995.935547, 29896.382813, 30708.738281],\n", + " 'Close': [28327.488281, 30027.296875, 29912.281250, 30695.468750, 30548.695313]\n", + "})\n", + "\n", + "initial_capital = 100000 # Example initial capital in USD\n", + "position = 0 # No initial position\n", + "capital = initial_capital\n", + "capital_over_time = [capital]\n", + "\n", + "for index, row in btc.iterrows():\n", + " if position == 0: # Buy condition\n", + " position = capital / row['Open']\n", + " capital = 0\n", + " elif position > 0: # Sell condition\n", + " capital = position * row['Close']\n", + " position = 0\n", + " \n", + " capital_over_time.append(capital)\n", + "\n", + "# Calculate final capital and returns\n", + "final_capital = capital\n", + "returns = (final_capital - initial_capital) / initial_capital * 100\n", + "\n", + "print(f'Initial Capital: ${initial_capital:.2f}')\n", + "print(f'Final Capital: ${final_capital:.2f}')\n", + "print(f'Returns: {returns:.2f}%')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This highlights a crucial limitation of this approach." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAADNB0lEQVR4nOzdeZyN5f/H8deZnWFm7GOQpcWSNUraJFtZSqiUkl22jH3Nkn0soSyhlEKkkkoyaVGRNVlCm1JplCwTwizn98f1OzPma5th5lxneT8fD4+55px7znkP7jlzPvd1fS6H0+l0IiIiIiIiIiIi4kYBtgOIiIiIiIiIiIj/UVFKRERERERERETcTkUpERERERERERFxOxWlRERERERERETE7VSUEhERERERERERt1NRSkRERERERERE3E5FKRERERERERERcTsVpURERERERERExO1UlBIREREREREREbdTUUpERETkCn322Wc4HA4+++yzbH1ch8PByJEjs/Uxvckvv/yCw+HglVdesR1FREREcpCKUiIiIuL1fvrpJ7p06UKZMmUICwsjIiKC22+/nenTp/Pff/+5NcvixYuZNm2a257vn3/+oX///pQtW5awsDDy589Pw4YNef/9992WITNGjhyJw+G47J+7777bdlQRERFxkyDbAURERESuxgcffMBDDz1EaGgobdq0oWLFipw9e5Yvv/yS/v37s3v3bubOnZsjz33XXXfx33//ERISknbb4sWL2bVrF7GxsTnynOfat28fdevW5e+//6Zdu3bUqFGDY8eOsWjRIpo2bUq/fv2YNGlSjufIjObNm3PdddelfX7ixAm6du3Kgw8+SPPmzdNuL1KkCCVLluS///4jODjYRlQRERFxExWlRERExGvt37+fVq1aUbJkST755BOKFi2adl/37t358ccf+eCDD3Ls+QMCAggLC8uxx7+UpKQkWrZsydGjR1m3bh01a9ZMu6937960bt2ayZMnU6NGDR555BG35UpOTiY1NTVDoQ6gcuXKVK5cOe3zw4cP07VrVypXrszjjz9+3uPY+nsVERER99HyPREREfFacXFxnDhxgpdeeilDQcrluuuuo1evXmmfL1iwgHvuuYfChQsTGhpKhQoVmD179nlfV6pUKZo0acKaNWuoWrUqYWFhVKhQgbfffjvDcf/bU+ruu+/mgw8+4Ndff01bjlaqVCkAzp49y/Dhw6levTqRkZGEh4dz55138umnn17R9/7WW2+xa9cuBg0alKEgBRAYGMiLL75IVFRUWm+qQ4cOERQUxKhRo857rH379uFwOHjhhRfSbjt27BixsbGUKFGC0NBQrrvuOiZOnEhqamraMa7eT5MnT2batGlce+21hIaG8t13313R9/S/j3tuT6m2bduSJ08eDhw4QJMmTciTJw/FihVj5syZAOzcuZN77rmH8PBwSpYsyeLFi8973Mx8TyIiIuI+miklIiIiXuu9996jTJky3HbbbZk6fvbs2dx4443cf//9BAUF8d5779GtWzdSU1Pp3r17hmN/+OEHHnnkEZ566imefPJJFixYwEMPPcTq1aupX7/+BR9/6NChHD9+nN9//53nnnsOgDx58gCQmJjI/PnzefTRR+nUqRP//vsvL730Eg0bNmTTpk1UrVo1y987QJs2bS54f2RkJA888ACvvvoqP/74I9dddx21a9dm2bJljBgxIsOxS5cuJTAwkIceegiAU6dOUbt2bf744w+6dOnCNddcw/r16xk8eDB//vnneT2zFixYwOnTp+ncuTOhoaHkz58/S99LZqWkpHDfffdx1113ERcXx6JFi+jRowfh4eEMHTqU1q1b07x5c+bMmUObNm2oVasWpUuXvqLvSURERNzAKSIiIuKFjh8/7gScDzzwQKa/5tSpU+fd1rBhQ2eZMmUy3FayZEkn4HzrrbcyPF/RokWd1apVS7vt008/dQLOTz/9NO22xo0bO0uWLHne8yQnJzvPnDmT4bajR486ixQp4mzfvn2G2wHniBEjLvm9VK1a1RkZGXnJY6ZOneoEnCtXrnQ6nU7niy++6AScO3fuzHBchQoVnPfcc0/a56NHj3aGh4c7v//++wzHDRo0yBkYGOg8cOCA0+l0Ovfv3+8EnBEREc6//vrrkln+199//33R79P1uAsWLEi77cknn3QCznHjxqXddvToUWeuXLmcDofD+cYbb6Tdvnfv3vMeO7Pfk4iIiLiPlu+JiIiIV0pMTAQgb968mf6aXLlypY2PHz/O4cOHqV27Nj///DPHjx/PcGxMTAwPPvhg2ucRERG0adOGb775hoSEhCznDQwMTOuzlJqaypEjR0hOTqZGjRps27Yty4/377//XvZ7d93v+rtq3rw5QUFBLF26NO2YXbt28d1332XoO/Xmm29y5513ki9fPg4fPpz2p169eqSkpLBu3boMz9OiRQsKFSqU5e/hSnTs2DFtHBUVRdmyZQkPD+fhhx9Ou71s2bJERUXx888/p92W1e9JREREcp6W74mIiIhXioiIAExxJrO++uorRowYwYYNGzh16lSG+44fP05kZGTa59dddx0OhyPDMTfccANgeh5FR0dnOfOrr77KlClT2Lt3L0lJSWm3u5aYZUXevHk5fPjwJY9x/d24ilMFCxakbt26LFu2jNGjRwNm6V5QUFCGHfB++OEHduzYcdFC019//ZXh8yvJfyXCwsLOyxQZGUnx4sXP+7eKjIzk6NGjaZ9n9XsSERGRnKeilIiIiHiliIgIYmJi2LVrV6aO/+mnn6hbty7lypVj6tSplChRgpCQEFatWsVzzz2X482uX3/9ddq2bUuzZs3o378/hQsXJjAwkPHjx/PTTz9l+fHKly/P9u3bOXDgANdcc80Fj9mxYwcAFSpUSLutVatWtGvXju3bt1O1alWWLVtG3bp1KViwYNoxqamp1K9fnwEDBlzwcV3FOZdzZ6DlpMDAwCzd7nQ608ZZ/Z5EREQk56koJSIiIl6rSZMmzJ07lw0bNlCrVq1LHvvee+9x5swZVq5cmaGIc7Hd73788UecTmeGGTjff/89QNqOehfyvzN2XJYvX06ZMmV4++23Mxzzv03HM6tJkyYsWbKEhQsXMmzYsPPuT0xM5N1336VcuXJcd911abc3a9aMLl26pC3h+/777xk8eHCGr7322ms5ceIE9erVu6JsnsgXvycRERFvp55SIiIi4rUGDBhAeHg4HTt25NChQ+fd/9NPPzF9+nQgfTbNubNnjh8/zoIFCy742AcPHuSdd95J+zwxMZGFCxdStWrVSy7dCw8PP68/1cWef+PGjWzYsOFS3+JFtWzZkgoVKjBhwgS2bNmS4b7U1FS6du3K0aNHzyt6RUVF0bBhQ5YtW8Ybb7xBSEgIzZo1y3DMww8/zIYNG/joo4/Oe95jx46RnJx8RZlt8sXvSURExNtpppSIiIh4rWuvvZbFixfzyCOPUL58edq0aUPFihU5e/Ys69ev580336Rt27YANGjQgJCQEJo2bUqXLl04ceIE8+bNo3Dhwvz555/nPfYNN9xAhw4d2Lx5M0WKFOHll1/m0KFDFy1iuVSvXp2lS5fSp08fbr75ZvLkyUPTpk1p0qQJb7/9Ng8++CCNGzdm//79zJkzhwoVKnDixIksf+8hISEsX76cunXrcscdd9CuXTtq1KjBsWPHWLx4Mdu2baNv3760atXqvK995JFHePzxx5k1axYNGzYkKioqw/39+/dn5cqVNGnShLZt21K9enVOnjzJzp07Wb58Ob/88kuG5X7ewBe/JxEREW+nopSIiIh4tfvvv58dO3YwadIk3n33XWbPnk1oaCiVK1dmypQpdOrUCTA7si1fvpxhw4bRr18/oqOj6dq1K4UKFaJ9+/bnPe7111/P888/T//+/dm3bx+lS5dm6dKlNGzY8JJ5unXrxvbt21mwYAHPPfccJUuWpGnTprRt25aEhARefPFFPvroIypUqMDrr7/Om2++yWeffXZF33v58uX59ttvmTBhAitXrmTBggXkypWLGjVqsHLlSpo2bXrRv7NcuXLx77//Zth1zyV37tx8/vnnjBs3jjfffJOFCxcSERHBDTfcwKhRozI0hPcWvvg9iYiIeDuH89w55CIiIiJCqVKlqFixIu+//77tKCIiIiI+Sz2lRERERERERETE7VSUEhERERERERERt1NRSkRERERERERE3E49pURERERERERExO2szpRat24dTZs2JSYmBofDwYoVK9LuS0pKYuDAgVSqVInw8HBiYmJo06YNBw8ezPAYR44coXXr1kRERBAVFUWHDh3O21Z5x44d3HnnnYSFhVGiRAni4uLOy/Lmm29Srlw5wsLCqFSpEqtWrcpwv9PpZPjw4RQtWpRcuXJRr149fvjhh+z7yxARERERERER8SNWi1InT56kSpUqzJw587z7Tp06xbZt23jmmWfYtm0bb7/9Nvv27eP+++/PcFzr1q3ZvXs38fHxvP/++6xbt47OnTun3Z+YmEiDBg0oWbIkW7duZdKkSYwcOZK5c+emHbN+/XoeffRROnTowDfffEOzZs1o1qwZu3btSjsmLi6OGTNmMGfOHDZu3Eh4eDgNGzbk9OnTOfA3IyIiIiIiIiLi2zxm+Z7D4eCdd96hWbNmFz1m8+bN3HLLLfz6669cc8017NmzhwoVKrB582Zq1KgBwOrVq2nUqBG///47MTExzJ49m6FDh5KQkEBISAgAgwYNYsWKFezduxeARx55hJMnT2bY9vnWW2+latWqzJkzB6fTSUxMDH379qVfv34AHD9+nCJFivDKK6/QqlWrTH2PqampHDx4kLx58+JwOK7kr0lERERERERExKM5nU7+/fdfYmJiCAi4+HyoIDdmumrHjx/H4XAQFRUFwIYNG4iKikorSAHUq1ePgIAANm7cyIMPPsiGDRu466670gpSAA0bNmTixIkcPXqUfPnysWHDBvr06ZPhuRo2bJi2nHD//v0kJCRQr169tPsjIyOpWbMmGzZsuGhR6syZM5w5cybt8z/++IMKFSpc7V+DiIiIiIiIiIjH++233yhevPhF7/eaotTp06cZOHAgjz76KBEREQAkJCRQuHDhDMcFBQWRP39+EhIS0o4pXbp0hmOKFCmSdl++fPlISEhIu+3cY859jHO/7kLHXMj48eMZNWrUebfPnz+f3LlzX/Z7FhERERERERHxNqdOnaJjx47kzZv3ksd5RVEqKSmJhx9+GKfTyezZs23HybTBgwdnmIGVmJhIiRIlaNasWVphzdskJSURHx9P/fr1CQ4Oth1HxCPovBA5n84LkfPpvBA5n84LEd+UmJhIx44dL9u6yOOLUq6C1K+//sonn3ySoZgTHR3NX3/9leH45ORkjhw5QnR0dNoxhw4dynCM6/PLHXPu/a7bihYtmuGYqlWrXjR7aGgooaGh590eHBzs9T9wfeF7EMluOi9EzqfzQuR8Oi9EzqfzQsS3ZPZ8trr73uW4ClI//PADH3/8MQUKFMhwf61atTh27Bhbt25Nu+2TTz4hNTWVmjVrph2zbt06kpKS0o6Jj4+nbNmy5MuXL+2YtWvXZnjs+Ph4atWqBUDp0qWJjo7OcExiYiIbN25MO0ZERERERERERDLPalHqxIkTbN++ne3btwOmofj27ds5cOAASUlJtGzZki1btrBo0SJSUlJISEggISGBs2fPAlC+fHnuvfdeOnXqxKZNm/jqq6/o0aMHrVq1IiYmBoDHHnuMkJAQOnTowO7du1m6dCnTp0/PsKyuV69erF69milTprB3715GjhzJli1b6NGjB2B2BoyNjWXMmDGsXLmSnTt30qZNG2JiYi65W6CIiIiIiIiIiFyY1eV7W7ZsoU6dOmmfuwpFTz75JCNHjmTlypUA5y2R+/TTT7n77rsBWLRoET169KBu3boEBATQokULZsyYkXZsZGQka9asoXv37lSvXp2CBQsyfPhwOnfu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EADvvQc7dthOI94g00WpTz75hAoVKpCYmHjefcePH+fGG2/kiy++yNZwIpJ1lSvDk0+acb9+2v1CvMOff8LcuWasWVIinsU1W2rRIvjxR7tZxH999hls2GAaKfftazuNiFzMDTfAQw+ZsS5mSGZkuig1bdo0OnXqRERExHn3RUZG0qVLF6ZOnZqt4UTkyoweDblywZdfwrvv2k4jcnmTJsGZM3DbbXDPPbbTiMi5atSARo0y7nom4m6upUAdOpiGyiLiuVxtRJYtg3377GYRz5fpotS3337Lvffee9H7GzRowNatW7MllIhcneLFzTbJAAMHmh5TIp7q0CGYM8eMhw83y09FxLO4ZjAuXAj/vwmziNts3Ahr15oGygMG2E4jIpdTuXL60u8JE2ynEU+X6aLUoUOHCA4Ovuj9QUFB/P3339kSSkSu3sCBUKgQfP89zJtnO43IxU2ZAv/9B7fcYhr1i4jnqVnTbKaRkqLZUuJ+rllSjz9uGimLiOcbOtR8fP11+PVXu1nEs2W6KFWsWDF27dp10ft37NhBUc2lFfEYEREwYoQZjxwJF2gHJ2Ld33/DzJlmrFlSIp7NNVvqlVf0BkPc59tvTcNkhwMGD7adRkQy65ZboF49SE42m9mIXEymi1KNGjXimWee4fTp0+fd999//zFixAiaNGmSreFE5Op07myaDf79t14MxDNNnQqnTkH16qZnjYh4rttug7p1zRsMLccQd3HNzHv4YfM7jYh4D9dsqZdeMpvaiFxIpotSw4YN48iRI9xwww3ExcXx7rvv8u677zJx4kTKli3LkSNHGOr6XyciHiE4GCZONOOpU+GPP+zmETnXP//ACy+YsWZJiXgH12ypl16C336zm0V837598OabZuxqnCwi3qN2bbj9drOZzZQpttOIp8p0UapIkSKsX7+eihUrMnjwYB588EEefPBBhgwZQsWKFfnyyy8pUqRITmYVkSvwwANwxx2mZ49rW28RTzBtGpw4AVWqQNOmttOISGbcdZd5k5GUpBm4kvPGjzeNkps2NY2TRcS7OBzps6XmzIHDh+3mEc+U6aIUQMmSJVm1ahWHDx9m48aNfP311xw+fJhVq1ZRunTpnMooIlfB4YDJk834lVdMbwYR244ehRkzzFizpES8i2u21Lx5cPCg3Sziu375xTRIhvQ3tSLife69F266CU6e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7woNDVXr1q3VvXt3hYWFKSQkRMOHD9eiRYv07bffau3atRozZoyefvpp26ECVsTGxmrZsmWKj49X//79FRsbqzZt2mjQoEGKioqSxEEygK+gKAWrIiMjddddd+mjjz7Sjh07sh+PiIhQu3btVKlSJa1fv95ihID33XzzzWrfvr0kKSQkREuXLs0uTL3//vvZw8+XLl1qOVLAO6KjozV8+HB17txZkukolExR6uqrr1ZMTEz2lgy2LiEYREZG6t5771VcXJwkadeuXRo7dqzee+89LViwQJ9++qlatGihTz/9VMePH7ccLeA9WVlZkqTrr78+e33PPfcoKSlJp0+f1q233qp9+/ZJYisf4CsoSsGrkpKSdODAAR09elQpKSmKiorSs88+q127dunFF1/Ud999l/3cqKgo3XPPPdq/fz8nLCGgXZoXFy5cUFhYWPbdu8zMTEVEROi9997LLkwtWbJETzzxhLp166ajR49ajh7wjEvzIjk5WWXKlJFk3nC4OqWysrKUlJSkCxcuSJIGDRqkXr166cyZM7bCBjzmcr9DOZ1OOZ1O3Xzzzfruu+/UqlWrXG/KU1NTFRkZaTlywHN++ztUSIh5e1u5cmVFR0fr0KFDSkhI0O7duzVx4kSVLVtWffr04aY34EM4fQ9es2vXLj3++OP69ddflZ6erpYtW6pfv36qXr263n//fTVs2FBOp1Pdu3dX48aNJZnjXMuVK6fw8HDL0QOecbm8GDhwoEqWLCnJbNHIyMhQZGSkli5dqr///e965JFHFBERoU8++UTXXnut5Z8AKHh/lBeuNxySlJ6ernPnzikkJETDhg3T2LFjtWnTJhUtWtRe8IAH/Nm1QjKdg5Kyc2THjh2qVq0aRSkErD/Ki/T0dDmdTt1+++0KDw/X8uXLVatWLVWsWFHz5s3T9ddfbzt8AP+HTil4xd69e9WoUSPdfvvtmj17tjp37qyNGzdq06ZNkqT4+Hh9+umnOnTokPr3768aNWqodevWeuuttzRixAhFRERY/gmAgvd7efHZZ59Jypl1EBYWlt0xVaFCBcXExOjzzz9XnTp1bIYPeERe80IyW70rV66swYMHa8yYMdq8ebPq1q1rK3TAI/KaE66tSCkpKRo0aJDefPNNPf/887rqqqusxQ54yp/lRUREhLp166ZKlSrp3XffVa1atSRJzZo102uv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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plotting the capital over time\n", + "plt.figure(figsize=(12, 6))\n", + "plt.plot(capital_over_time, marker='o', linestyle='-', color='b', label='Capital')\n", + "plt.title('Capital Over Time')\n", + "plt.xlabel('Days')\n", + "plt.ylabel('Capital (USD)')\n", + "plt.xticks(range(len(btc)), btc['Date'], rotation=45)\n", + "plt.legend()\n", + "plt.grid(True)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Genv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/data_exploration.ipynb b/notebooks/data_exploration.ipynb index e69de29..02dd5ff 100644 --- a/notebooks/data_exploration.ipynb +++ b/notebooks/data_exploration.ipynb @@ -0,0 +1,501 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EDA ON INGESTED DATA" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timestampopenhighlowclosevolume
02023-01-01 00:00:0016541.7716545.7016508.3916529.674364.83570
12023-01-01 01:00:0016529.5916556.8016525.7816551.473590.06669
22023-01-01 02:00:0016551.4716559.7716538.1416548.193318.84038
32023-01-01 03:00:0016548.1916548.1916518.2116533.044242.08050
42023-01-01 04:00:0016533.0416535.9716511.9216521.854285.00909
\n", + "
" + ], + "text/plain": [ + " timestamp open high low close volume\n", + "0 2023-01-01 00:00:00 16541.77 16545.70 16508.39 16529.67 4364.83570\n", + "1 2023-01-01 01:00:00 16529.59 16556.80 16525.78 16551.47 3590.06669\n", + "2 2023-01-01 02:00:00 16551.47 16559.77 16538.14 16548.19 3318.84038\n", + "3 2023-01-01 03:00:00 16548.19 16548.19 16518.21 16533.04 4242.08050\n", + "4 2023-01-01 04:00:00 16533.04 16535.97 16511.92 16521.85 4285.00909" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import ccxt\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from datetime import datetime\n", + "\n", + "# Initialize Binance API\n", + "binance = ccxt.binance()\n", + "\n", + "def fetch_ohlcv(symbol, timeframe, since=None, limit=1000):\n", + " ohlcv = binance.fetch_ohlcv(symbol, timeframe, since=since, limit=limit)\n", + " return ohlcv\n", + "\n", + "def ohlcv_to_dataframe(ohlcv):\n", + " df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])\n", + " df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')\n", + " return df\n", + "\n", + "# Fetch data\n", + "symbol = 'BTC/USDT'\n", + "timeframe = '1h'\n", + "since = binance.parse8601('2023-01-01T00:00:00Z') # Start date\n", + "ohlcv = fetch_ohlcv(symbol, timeframe, since)\n", + "\n", + "# Convert to DataFrame\n", + "df = ohlcv_to_dataframe(ohlcv)\n", + "\n", + "# Display the first few rows of the DataFrame\n", + "df.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timestampopenhighlowclosevolume
count10001000.0000001000.0000001000.000001000.0000001000.000000
mean2023-01-21 19:29:59.99999974420842.59366020908.73736020777.4405020847.79339011074.398736
min2023-01-01 00:00:0016513.33000016534.03000016499.0100016513.3400002607.107500
25%2023-01-11 09:45:0017439.91750017461.77500017407.8350017441.0950006798.787183
50%2023-01-21 19:30:0021740.06500021795.25000021685.2200021741.6350009102.759690
75%2023-02-01 05:15:0023003.65000023080.58750022931.1900023003.89750013111.481182
max2023-02-11 15:00:0024188.09000024255.00000023946.5900024189.85000066759.623940
stdNaN2606.2718422623.6931672582.233292602.8925746931.750637
\n", + "
" + ], + "text/plain": [ + " timestamp open high low \\\n", + "count 1000 1000.000000 1000.000000 1000.00000 \n", + "mean 2023-01-21 19:29:59.999999744 20842.593660 20908.737360 20777.44050 \n", + "min 2023-01-01 00:00:00 16513.330000 16534.030000 16499.01000 \n", + "25% 2023-01-11 09:45:00 17439.917500 17461.775000 17407.83500 \n", + "50% 2023-01-21 19:30:00 21740.065000 21795.250000 21685.22000 \n", + "75% 2023-02-01 05:15:00 23003.650000 23080.587500 22931.19000 \n", + "max 2023-02-11 15:00:00 24188.090000 24255.000000 23946.59000 \n", + "std NaN 2606.271842 2623.693167 2582.23329 \n", + "\n", + " close volume \n", + "count 1000.000000 1000.000000 \n", + "mean 20847.793390 11074.398736 \n", + "min 16513.340000 2607.107500 \n", + "25% 17441.095000 6798.787183 \n", + "50% 21741.635000 9102.759690 \n", + "75% 23003.897500 13111.481182 \n", + "max 24189.850000 66759.623940 \n", + "std 2602.892574 6931.750637 " + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Time Series Plot of Closing Prices" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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u36rVq3E1yqRSAQXFxchLCxMeOaZZ4QjR45U+H5V5XWX58SJE8LkyZMFf39/QS6XC+7u7sKIESOE77//XtBoNOI4AMLChQtNzj158qQQEREhODk5CQ4ODsKwYcOEgwcPmox59913hT59+ghubm6CQqEQQkNDhffee09QKpUm465evSo8+eSTgp+fnyCXy4WAgADhvvvuE3799ddKXwMAITIyssIxe/bsEQAIGzduLPe5PXv2mBz/999/hVGjRgnOzs6Co6Oj0KVLF+Hzzz+vtXkLgiDk5eUJixYtEsLCwgSFQiE4OzsLAwcOFNasWVPu97lWqxWCgoIEAMK7775rcYxSqRTef/99ISwsTLCzsxPc3d2Fnj17CosXLxZycnLEcVV578rj6OgoTJ061eJzZb9fFi5cKAAQ0tPTTcZNnTpVcHR0NDv/nnvuEcLCwqr1moiIqPokgmChZpGIiKgZeuGFF3D8+HFxCQARERHR3YJl/0REdNfo1q1btbb4IyIiImrqmPknIiIiIiIiaubY7Z+IiIiIiIiomWPwT0RERERERNTMMfgnIiIiIiIiauYY/BMRERERERE1c+z2X0u0Wi1u374NZ2dnSCSShp4OERERERERNXOCICAvLw/+/v6QSivO7TP4ryW3b99GUFBQQ0+DiIiIiIiI7jJJSUkIDAyscAyD/1ri7OwMQPemu7i4NPBsiIiIiIiIqLnLzc1FUFCQGI9WhMF/LTGU+ru4uDD4JyIiIiIionpTlaXnbPhHRERERERE1Mwx+CciIiIiIiJq5hj8ExERERERETVzXPNPRERERETUhAiCALVaDY1G09BToXogl8shk8lqfB0G/0RERERERE2EUqlEcnIyCgsLG3oqVE8kEgkCAwPh5ORUo+sw+CciIiIiImoCtFotEhISIJPJ4O/vD1tb2yp1eaemSxAEpKen4+bNm2jXrl2NKgAY/BMRERERETUBSqUSWq0WQUFBcHBwaOjpUD3x9vbG9evXoVKpahT8s+EfERERERFREyKVMoy7m9RWdQe/a4iIiIiIiIiaOQb/RERERERERM0cg38iIiIiIiJqFCQSCX7//feGnobVhg4ditmzZzf0NCrE4J+IiIiIiIjqXEpKCmbNmoU2bdrAzs4OQUFBuP/++7F79+6Gnppo0aJFkEgkkEgksLGxQevWrTFnzhzk5+dXeN6mTZuwZMmSeppl9bDbPxEREREREdWp69evY+DAgXBzc8OHH36Izp07Q6VSYefOnYiMjER8fHxDT1EUFhaGv//+G2q1GgcOHMBTTz2FwsJCfPnll2ZjlUolbG1t4eHh0QAztQ4z/0RERERERE2UIAgoVKob5I8gCFWe5wsvvACJRIKjR4/ioYceQvv27REWFoa5c+fi8OHD5Z539uxZDB8+HAqFAp6enpg5c6ZJFn7v3r3o06cPHB0d4ebmhoEDB+LGjRvi81u2bEGPHj1gb2+PNm3aYPHixVCr1RXO1cbGBn5+fggMDMSkSZPw+OOPY+vWrQB0lQHdunXDN998g+DgYNjb2wMwL/svKSnBa6+9hqCgINjZ2SEkJATffvut+Py5c+cwZswYODk5wdfXF1OmTEFGRkaV38/qYOafiIiIiIioiSpSadBpwc4G+dwX3omAg23lIWVmZiZ27NiB9957D46OjmbPu7m5WTyvoKAAERER6N+/P44dO4a0tDTMmDEDUVFRWLNmDdRqNSZMmIBnnnkGP//8M5RKJY4ePSpujbd//348+eST+N///ofBgwfj6tWrmDlzJgBg4cKFVX6dCoUCSqVSfHzlyhX89ttv2LRpE2QymcVznnzySRw6dAj/+9//0LVrVyQkJIjBfXZ2NoYPH44ZM2bg008/RVFREV577TU88sgjiImJqfK8rMXgn4iIiIiIiOrMlStXIAgCQkNDrTpv3bp1KC4uxtq1a8WbBsuXL8f999+P999/H3K5HDk5ObjvvvvQtm1bAEDHjh3F8xcvXozXX38dU6dOBQC0adMGS5Yswbx586oc/J84cQLr1q3D8OHDxWNKpRJr166Ft7e3xXMuXbqEDRs2IDo6GiNHjhQ/t8Hy5cvRvXt3/Oc//xGPfffddwgKCsKlS5fQvn37Ks3NWgz+iYiIiIgIao0WsTdz0CXQFXIZVwc3FQq5DBfeiWiwz10V1iwPMBYXF4euXbuaVAsMHDgQWq0WFy9exJAhQzBt2jRERERg1KhRGDlyJB555BG0aNECABAbG4sDBw7gvffeE8/XaDQoLi5GYWEhHBwcLH7es2fPwsnJCRqNBkqlEuPGjcPy5cvF51u1alVu4A8Ap0+fhkwmwz333GPx+djYWOzZswdOTk5mz129epXBPxERERER1Z33d8Tj6/0JmNKvFZZMCG/o6VAVSSSSKpXeN6R27dpBIpHUSVO/1atX48UXX8SOHTuwfv16vPXWW4iOjka/fv2Qn5+PxYsX4//+7//MzjOs1bekQ4cO2Lp1K2xsbODv7w9bW1uT5y0tXTCmUCgqfD4/P1+sXijLcOOiLvCWHhERERER4ev9CQCAHw7fqGQkkXU8PDwQERGBFStWoKCgwOz57Oxsi+d17NgRsbGxJuccOHAAUqkUHTp0EI91794d8+fPx8GDBxEeHo5169YBAHr06IGLFy8iJCTE7I9UWn4obGtri5CQELRu3dos8K+Kzp07Q6vVYt++fRaf79GjB86fP4/WrVubzauyGws1weCfiIiIiIiI6tSKFSug0WjQp08f/Pbbb7h8+TLi4uLwv//9D/3797d4zuOPPw57e3tMnToV586dw549ezBr1ixMmTIFvr6+SEhIwPz583Ho0CHcuHEDu3btwuXLl8V1/wsWLMDatWuxePFinD9/HnFxcfjll1/w1ltv1elrbd26NaZOnYqnnnoKv//+OxISErB3715s2LABABAZGYnMzEw89thjOHbsGK5evYqdO3di+vTp0Gg0dTYvBv9ERERERASppKFnQM1ZmzZtcPLkSQwbNgwvv/wywsPDMWrUKOzevRsrV660eI6DgwN27tyJzMxM9O7dGxMnTsSIESPE9fcODg6Ij48Xtw6cOXMmIiMj8eyzzwIAIiIisG3bNuzatQu9e/dGv3798Omnn6JVq1Z1/npXrlyJiRMn4oUXXkBoaCieeeYZsYLB398fBw4cgEajwejRo9G5c2fMnj0bbm5uFVYk1JREqG73BTKRm5sLV1dX5OTkwMXFpaGnQ0RERERklY5v70CRSpd1vP7fcQ08G7KkuLgYCQkJJvvLU/NX0dfdmjiUmX8iIiIiIoKdnKEBUXPGf+FERERERAQ7G4YGRM1Zg/4LX7p0KXr37g1nZ2f4+PhgwoQJuHjxosWxgiBgzJgxkEgk+P33302eS0xMxLhx4+Dg4AAfHx+8+uqrUKvVJmP27t2LHj16wM7ODiEhIVizZo3Z51ixYgVat24Ne3t79O3bF0ePHq2tl0pERERE1KjZ2ZTu2a7VWrcyOLNAifs//xerDyTU9rSIqJY0aPC/b98+REZG4vDhw4iOjoZKpcLo0aMtbv/w2WefQSIx70Ki0Wgwbtw4KJVKHDx4EN9//z3WrFmDBQsWiGMSEhIwbtw4DBs2DKdPn8bs2bMxY8YM7Ny5Uxyzfv16zJ07FwsXLsTJkyfRtWtXREREIC0trW5ePBERERFRI2Kc+S9QqisYae7zmMs4eysHi/+4UNvTIqJa0qDB/44dOzBt2jSEhYWha9euWLNmDRITE3HixAmTcadPn8bHH3+M7777zuwau3btwoULF/Djjz+iW7duGDNmDJYsWYIVK1ZAqVQCAFatWoXg4GB8/PHH6NixI6KiojBx4kR8+umn4nU++eQTPPPMM5g+fTo6deqEVatWwcHBweLnJCIiIiJqznKKVFaNT88rqaOZkCXs2X53qa2vd6Na2JOTkwMA8PDwEI8VFhZi8uTJWLFiBfz8/MzOOXToEDp37gxfX1/xWEREBHJzc3H+/HlxzMiRI03Oi4iIwKFDhwAASqUSJ06cMBkjlUoxcuRIcUxZJSUlyM3NNflDRERERNRUFatL9xe3NvgvVmlrezpkgVwuB6CLkejuYUhqy2SySkZWzKY2JlMbtFotZs+ejYEDByI8PFw8PmfOHAwYMADjx4+3eF5KSopJ4A9AfJySklLhmNzcXBQVFSErKwsajcbimPj4eIufd+nSpVi8eLF1L5KIiIiIqJEyDuBzi6wr+y8xunEgCILF5bpUczKZDG5ubuLSZAcHB77XzZxWq0V6ejocHBxgY1Oz8L3RBP+RkZE4d+4c/v33X/HY1q1bERMTg1OnTjXgzCybP38+5s6dKz7Ozc1FUFBQA86IiIiIiKj6SlQ1yfyXnlug1MDJrtGEGc2OoRqavcnuHlKpFC1btqzxjZ5G8a8yKioK27Ztwz///IPAwEDxeExMDK5evQo3NzeT8Q899BAGDx6MvXv3ws/Pz6wrf2pqKoDSfxh+fn7iMeMxLi4uUCgUkMlkkMlkFsdYWmoAAHZ2drCzs6vW6yUiIiIiamyK1aWZ/+xCpVXnGlcK5BapGPzXIYlEghYtWsDHxwcqlXU3aahpsrW1hVRa8xX7DfqvUhAEzJo1C5s3b8bevXsRHBxs8vzrr7+OGTNmmBzr3LkzPv30U9x///0AgP79++O9995DWloafHx8AADR0dFwcXFBp06dxDF//vmnyXWio6PRv39/ALo3s2fPnti9ezcmTJgAQFdesXv3bkRFRdX66yYiIiIiaky0WgFKo+D/7K0cPGrF+en5pQ3/cotV8IeiFmdHlhgSmERV1aDBf2RkJNatW4ctW7bA2dlZXKPv6uoKhUIBPz8/i5n3li1bijcKRo8ejU6dOmHKlCn44IMPkJKSgrfeeguRkZFiZv65557D8uXLMW/ePDz11FOIiYnBhg0bsH37dvGac+fOxdSpU9GrVy/06dMHn332GQoKCjB9+vR6eCeIiIiIqCHlFasQl5yHXq3cIZXefWuolRrThn3Hr2dV+VyVRovMgtJKAWv7BRBR/WjQ4H/lypUAgKFDh5ocX716NaZNm1ala8hkMmzbtg3PP/88+vfvD0dHR0ydOhXvvPOOOCY4OBjbt2/HnDlzsGzZMgQGBuKbb75BRESEOGbSpElIT0/HggULkJKSgm7dumHHjh1mTQCJiIiIqPl5as0xHLuehQ8e6oJHet99fZyM1+wDwMXUPKw/logQH2f0bOVe4bkZ+abb/OUVsxSdqDGSCNwkslbk5ubC1dUVOTk5cHFxaejpEBEREZEVWr+uqwjt3tINm18Y2MCzqX8pOcXot3Q3ZFIJWns64Gp6gfjctf+MrbAa4si1O5j01WGTY789P6DSmwZEVHPWxKE17xpARERERNRMaO/StJhhqz57Gyke7mVa+ZBwp8DSKQB0PbwuJOeaHf/Pn3G1O0EiqjEG/0REREREendrUWyxSrfm314uw6ReQXCwLW0kd+5WDgBgy+lb+Hz3ZRSrNNDo75LMWX8ai/+4YHY9dvsnanwY/BMRERHRXc044NfetcG/LvNvZyOFu6MtNj7XH2H+uhLic7dykJRZiJd+OY2Poy8h9O0dePybwyhRa/D76dsWr9fSw6He5k5EVcPgn4iIiIjuakVGze7O3crFt/8m3HUVAIbg316uy/iH+btiav/WAIDdcWl46/dzJuMPX8vEJ7sulXs9VZndA4io4TH4JyIiIqK7WnahaXf6JdsuIPpCagPNpmGUqHXBup28tNx/REcfeDnZ4lpGAfZdSjc757sDCSaPv36yl/hx2d0DiKjhMfgnIiIiorta2eAfAN7dHoe9F9NQpLw7gljjsn8DTyc7fDu1N1p76kr4593bAf6u9gj2ckQ7HyeoNKXVER9M7IJRnXzx7oRwAKbVFETUOLATBxERERHd1bKLlGbHEjMLMW31MTwzOBhvjusEANDqm9xVtO1dU1WsNjT8M80Ndg1yw55XhiK3WA1XhRzTBrQGAHz3bwI+0pf9O9vb4BH9DgGGZQOGBoJE1Hgw809EREREd7WcMpl/W1npr8hHEzIBAOuPJaLrO7swZ8Pp+pxavYlNygYAONia5wYlEglcFXLxeQdbG/i42IvPG54DAIU++Gfmn6jxYfBPRERERHe17CLT4H9y35b4/qk+AID4lDysPpCA1347i7xiNbacvo34FPN97ZuyEzey8O2/uvX7E7oHVOkcH2c78WPj4N9QOVDC4J+o0WHwT0RERER3taxC07L/bkFuGBziBQdbGUrUWrN97H84dKM+p1fnVu69CgB4qEcgHujqX6VzfJyZ+Sdqahj8ExEREdFdLTNfF/y393XC7JHt8EBXf0ilEnRs4SKO8Xa2w1p9NcDO8ynQaJvHVoA5hSr8Hafb2eD5oW2rfJ6PS2nm33ipgB3X/BM1Wgz+iYiIiOiudiU9HwAwpX9rzB7ZXmzo1zfYQxwzoK0n+rf1hLO9DTLylTiVmNUgc61tVzN0r72Fqz1CfJyqfJ6Hg634sVpbGugz80/UeDH4JyIiIqK72sWUPABARz9nk+PP3lOaCR/VyRdymRQjQn0AAHsuptXfBOvQ9YwCAEAr/XZ+VWW844FSXRr8G9b8FzP4J2p0GPwTERER0V0rp1CF5JxiAED7MsG/q0KO6DlDsGRCOMaGtwAA9GjlDgC4mJJfvxOtI9fvFAIAgr0cq30N40BfYSszO2YNQRBwM6sQgtA8llUQNSYM/omIiIiaAY1WwCfRl3DgSkZDT6VJ+eVYIgAgwE0BF3u52fPtfJ0xpV8rMdNtKI2/nJZXf5OsQ4bMf2tP64N/Z3vdWv8Bbb3EY/Y2uuBfpRGg1li/7n/jiZsY9P4e/Hgk0epziahiDP6JiIiImoHfT93C/3ZfxuPfHGnoqTQZccm5WPpXPAAgzN+lktE67Xx01QGJmYXNorT9+h1D2b/1wf/2WYOx4L5OiBoeIh4zZP4BoFhtffA/79czAIC3fz9n9blEVDEG/0RERETNwI3MwoaeQpOz92I6AMDBVoY3x3Ws0jleTrZwc5BDEICr6U2/9D9J/31j7Zp/AGjp6YCnBgXDXl4a8NvZlIYXq/Zexe+nbmHpX3G4lNo8KiWImjKbyocQERERETUfey6m4afDieIWd6+M7lDlzLdEIkE7Hyccu56FK2n5CPN3rcup1im1RousQhUAwMfZrpLRVSORSGBnI0WJWovle66Ix/ddTMcLw0Jwb5gfbG1M849xyblIzCzEwBAvk+PZhUq4Ge0qQEQ1w+CfiIiIiO4q7/xxAQn6te4A0K+Np1Xne+sD5ZwiVa3Oq75lFioBABIJajXILrFQ7h+fkocXfz4FALinvTcW3t8Jbbx1/RNmfH8ct7KLTKoGAOD49SyM7ORba/Miutux7J+IiIiI7hrJOUVi4C+X6bL4oWW6/FdGIdflzwqVTXvNf2aBLvh3d7CFzGjrvrq271I6pq0+Bq1WQE6RCreyiwCY3zSYv/kscgqrf4PlpyM3sGDLOZOtCInuZgz+iYiIiOiucejqHQBAl0BXnF0UgT9fGmyyZ31VOOib2jX54D9fF/x7ONZfaf3jfVsC0DVMjE/JwzULfRMGtPWEi70N0vNKsP9KerU+j1Yr4N1tcVh76AZ2XUip0ZyJmgsG/0RERER01/j3sm4rxP5tPGEvl0Eus/7XYTH4L1HX6tzq252Cug/+wwNcEOyl66egkMvw3oOdMTzUBwCw/3I6rqUXmJ3TJdANY8JbAAAupVSvUWBSViGK9Lsx/HriZrWuQdTcMPgnIiIiag4EwehDoYKBd6dCpRov/XIKm07dAoAarSU3bGdX2MS3+jOU/Xs51U3wP65LC2yNHIQvHu+Bfm08sOHZ/gAgNvbbHZ9m0nvBwMvJFh30SzHiqxn8XzQ6759L6UjJKcYfsbfx0c6LNVpKQNSUseEfERERUTOj1gqQy+pvDXdTsCc+HVtO3wagy0D3bOle7WsZMv9FTbzs/05+CYDaz/y/Mz4MPx1OxIL7OkEqlaBjCxf8MrO/+HxEmC/+82ccjiZk4mhCptn53s528HbSNVW8qN8iUKnWYnnMZZxKysZ/HuyMII+Ktya8nFa6nEArACM+3osC/dcr9mY2vpvWu1pVH0RNGb/jiYiIiJoZlYYNzspKzikSP54xONjqdf7GFLaGhn/Npey/drb5M3iyf2vsnDMEvi72Fp8PdHfAA139xcdSia4Hg4GXkx3a6zP/iZmFKFSq8Un0Jfwv5gr2X87ACz+drPR73JD5b+OtW3JQYHSjZv/lDHRetBNzN5xGlv49ILobMPNPRERE1Myo1ALA7dFNpOYWA9BlnWePbF+jaznIm0nDP33g61mPDf8M5t3bAVpBgEqjxeN9W+HQ1Ts4czMHgC7493Kyg7uDHFmFKlxOzcf6Y4niuWdv5WDh1vN4/p62FisABEHAseu6ioJ5ER3w2d+XEZ+Sh3Y+Tpg/NhSRP51CkUqDTSdvIb9Yja+e7GVy/sWUPKw+kACFrQwlai2Ss4vQ3s8Z88d0rMN3hKjuMfgnIiIiagY0Ruv8lcz8m0nN1ZW492rlUeNt7ZpL2X9mPTT8K08LVwWWPdpdfHzhdq74saEHQStPR2QVZmP1gQRkFarg42yHiT0D8cXeq1h3JBGHrt5BzMv3QCIx/XqeuZmD5JxiONrKMLSDDwaGeGHTyVsYHuqDIA8H/DNvGNYfS8RHuy7hwJUMaLSC+D1x4XYunvzuKDL0SyIM9lxMx8M9gxDi41RXbwlRnWPZPxEREVEzoNaUBv8s+zdnyPz7uNS8xF3RTLb6yyvWLVtwtm9c+UB3B13w39pTl9X/Xd+r4cEeAXiiXytxXEJGAU7cyDI7/49Y3fihHXxgL5fB2V6OqQNai1UC3s52eH5oCBRyGQqUGnG7wVOJWXjwiwNmgb+BcfUBUVPE4J+IiIioGTDO9jP4N5eWpwvo/MpZh24NB/2a/6Im3u2/QN+zwMmu4YN/J6MbEIZ+DK08HU3GTOwRCH83BTa/MADt9Bn4mT+cwKfRlzB/0xmcuJGFiSsP4pt/EwAA/9cjoNzPJ5NKEB7gAkBXKaBUaxG17hRK1FoMDPHEybdH4dD84ZjUK0g858CVO7XzYhsB7ghyd2LwT0RERNQMqBj8l0sQBDHzX14TOms4iJn/pt3wr6BEN3/HRhD8T+gWgL7BHnhldGk/hlaepev5uwa5oZ2vrglg95bu+HRSN9jLpcgsUGLZ7sv4+WgSHlp5EMf1lQB9WntgeKhPhZ+zc4AbAGDZ7su497N/cCu7CJ6Otlj1RE94ONqihasC70/sgj+iBgEA7hRYrghoar79NwGdFuy0uNMCNW8M/omIiIiaAZXaaM2/mlk9Y/klarFEvzbK/h2aSdl/fknjyfwrbGVY/2x/RA1vJx4zDv4jh7Y1GR8e4Io/Xxxs8VodW7hg+ePdzXoBlDW4nRcA3Y4C1zIKAAAjOvrA2V5uMs5T34Mgs0DZLDLmf8TeRpFKg6/+udrQU6F6xuCfiIiIGlRz+GW6MWDmv3wpObqsv7O9jViyXxNi2b9SI37//nU2GYM/iMGpRPM16I2RRiugWKX7PmkMmX9Lwvxd0SXQFRFhvhjVydfs+TbeTlgzvTciwnzx3oPh4vFfZvaDj3PlFR73tPc2O2apWsDQEFGlEZBb3HSqPS6n5mH+pjO4lV26zaVWK4jbIO65mI70vOZRzUBV0zj/pRMREdFd4VZ2EaZ8cwR923hg6f91aejpNGmNfc2/cUf1+nZTH/wEuClq5XqGhn9qrQClRgs7Gxme/+kkAN0a9GNvjqyVz1OXCoyWLBgqGRobe7kMW/Ul9+UZ2sEHQzv4QBAEyGVS+LrYw1Uhr/AcA6lUglVP9MR//4rTbS3oaIuhHcyDf3u5DI62uuaAmQXKKl+/oT208iByi9W4mJKHTS8MBKCrcjD0qtBoBaw+kIAXhoU0iuoPqnvM/BMREVGD0GgFPLLqEK5lFODno0kNPZ0mzzjgT88rwT+X0htNVcW19Hx0XbwL//0rvt4+5/7L6Ri/4gBO3MjCrSxd8B/obr4nfHUYB8t/nk02ea6pZFIN6/1tpBLY2TT9kEAikeCRXkEWs/kVuTfcD3tfHYZfnx+Ar5/sBXu55Rshnk665SKZTWjdv6FK4czNHPHYeaMtFQHgi71X0f8/u/H7qVv1OjdqGE3/XzoRERE1SV/vv2ZSjlrcxDunNzSV0VZ/z/90Ek9+d7TR3FR5d3sc8kvUWLWvbtcYL9xyDpO+PITrGQWY8u1RxCZl48Od8bgpBv+1k/mXy0p/hZ6zPhbZhcpauW59Mm72V9naeCot/c/Ib3pfa6n+63snvwRL/4oDANwb5ifexMorUWPer2fw8oZYjPxkH66k5TXYXKluMfgnIiKiepeaW4xPoy+ZHFt3JBF5xaoGmlHTZ6nU/8tG0NDr/O0cxMSn1fnn0WgFfH/oBo4kZGLy14fF44evZWLjcd1NkNoK/stK0e8kYNBYKi4qkl+iu9nGcu+q8XQsbfrX1Bju7XwecwU3s3Q7Grw8uj1+mdkP307thWEdvKHUaPHbyZu4kpaPR748jCtp+Q07aaoTDP6JiIio3q3adxUlai16tXIX911/Z9sFzN90toFn1nQp1ebB/22jyoqGUKzSYNKXh02O1dX2eMk5pa/1do5pMH5HH7DVVfCfnlcCZ6N96tPqofS/pp3nC8XMf+Nc79/YGHf8b2okEuDlDbFYc/A6AOCTSd3QztcZXQLdMKKjL95/yLTfSmaBEhNWHEAub8Y2Owz+iYiIqN4Z1qA+OaA1vJxtxePbziSXdwpVwlLmX6UREL5wJ7ou3oX3d9TfenuDC8m54nZyBillAvPakphZaPI4xMcJC+/vZHKsttb8A6bNA9NyS0y2/Vu5t/YrLrIKlDh87Q7yilXYeDwJPZZEY+2hG9W+nuHrUhu7H9wNPBx1a/5PJ2XjZlZhJaMbl2KVLqsPAH2DPTBEv8WhgY+LPT6c2AUu9jaYOaQNAN33x45zKfU+V6pbDP6JiIio3mXps2e+znbwdCzdd51Lj6vPeM2/sfwSNXKKVFi59yoS79Rv0HImKdvsmKFEfs/FNBy+dqfWPtfNTNMqh7GdW2D6wGAcnj8CACCVAC09ay/4/2VmP3g76753b9wpgEZb+v6vOXgd8Sm55Z1qtePXMzHkwz149KvDGLNsP97ZdgEAsHDr+Wpf09Dtn2X/VePvpqtQir6QiiEf7EGshe/txs7WRoqfZvS12OPh4V5BOLMoAm+M7YhXIzoAAOb9egZrDiTU9zSpDjH4JyIionqXqW+Q5uFoK5bTAhCXAJD1qrK93/eHrpsdK1JqTBov1qYzt3QVHi+NaIcBbT0B6DL/KTnFmL76GB796rDYeK6mkspkY0d11O0L7+dqj22zBmHTCwPhYl97W7QFeTjgwe4BAIAr6br10XKZBOEBLgCAez/bjw3Hqt9wMadIhSKlBoIg4LXfziBP37n9ZlaRyRIPQwb/7wupeGPzWZy7lWPxemUZ1vyz7L9q/q9HIGYND0GQhwJaAfXSx6K2DWnnBRtZ5eHf//UIED/+eNcls+odaroY/BMREVG9Umu0yCnSrSV1d7SFwmhrLZ8mGPwLgoAv9l7BDxYC6/qkLBP8B7orsP1F0z3S/7mUbvL42PVMDHw/BgP/G4MjZbLw6XklZsesdf6WLvvdNcgVfq66r21KbjHO3MwWx2w5fRuLtp6vcSl1klHZ/+B2XmIQDgDhAa7oFuRWo+tb4q3f/s3QHM3NwRb3d/EXn5/325lqXTe3WIVB/41B13d2IXj+n7iaXgA7Gym6BroCAEqMgv/Oi3ai9evbMWPtcaw7kojHvzmCG3cKKv0cxt3+qXJOdjZ4eXQHzBzSFgBw4kZWA8+oYsaVKAbBXo5VOreFqwLnFkfAw9EWeSVqvLzhdJVuLlLjx+CfiIiI6lVOkQqGPmVuCrlJ5tdW1nTq/tX6X4Zjb+bggx0X8faW84i+kNpg8yn7y7mnkx3C/F3x63P9sfmFAZBIgMtp+UjLK11zv+nkTbGB2T+XTW8MPPfjCUz66jC216APQ6r+cwW5O4hVHVfTCkyy029sPos1B69j5toTNWpgZ1jzv3xyd/zwtOXS5tpm6FdhCP5dFXL0a+NZ4+veyChEXonaJMM/sqMv7ungYza27FuWU6TC6gPXzcZptAI+ib6ED3fqej8Y/t2x7N86vVq5AwBOJWaJ/wc0RgUWGmu28Xaq8vlOdjZYcJ+uZ8bO86lYdySx1uZGDYfBPxEREdWrrEJd1t9VIYeNTIoWRo3TSix0rG+M9l5MQ8ibf2HBlnN48IsD4vF3t19osG3eVGrTz+ul35qsV2sPdG/pjk4tdJnwQ1dLs/k3s0rL/eOTS/f2vpKWJ2Y2F249ZzGLaJCRXwKthefLVngMCtE1Gdsaewvbz5rfULiQnIs/qnmjQRAEXE7VBeAhPlUPcGrK20l3Q8Pw8l0VcoQHuIoZeuOqFmsY3jcAePaeNujUwgXP3dMWPVq6lXvOY32CsOqJHgB0PQcOXskAAOQVq/DbiZt48edT+N/uy1ix5ypuZRehQF/2z4Z/1mnv6wwXexsUKDXYeOJmQ0+nXJaW01Q1828woXsApg1oDQD4V//9RE0bg38iIiKqV1lG6/0B4Ll72sJH3zitWKUp97z6VqzSIGrdSfxm4Rf8RfpGa2sP3TDJvN64U4g/zzZMh2zzzL+tyePu+sDxUmppkG+81j8uubRB3a8nbokfZ+QrTZ4ztuNcMnq9+ze+s9AULLtMhceAEC8MCvGCSiPgarrlsvT/bI+r1laAyTnFyCtRw0YqQRuv+gv+W7iZLlPRaAXIpBJ8PbUXAKBYranWzSBD8N+ntQfmj+mIP18ajM6BrmjtaRq8+bvaw8FWhr/n3oOl/9cFg9p5i89N/uYIkjIL8fU/1/DyxliTGy6JdwqRXaT7d2i8RSFVTiaVIHJYCADgve1xFrP/aXnFDV4mbyn4N96hoqrGd9MtYzl2PdPiTT5qWho0+F+6dCl69+4NZ2dn+Pj4YMKECbh48aLJmGeffRZt27aFQqGAt7c3xo8fj/h4061qEhMTMW7cODg4OMDHxwevvvoq1GrTb/i9e/eiR48esLOzQ0hICNasWWM2nxUrVqB169awt7dH3759cfTo0Vp/zURERHcTlUaLS6l5EAQBsUnZuJqeL5aZuzvomq+5KuRY+URPALotqRqL9ceSsO1MMl7eGGv2nH2ZjO6Atp7iL8mR607ij9jb9TJHY2XX/Hs62Zk8DtJvc5ek74ovCAJuGwX/t3OKkVOoQl6xCuuOmG4hd9ZCEzm1RovnfjwJAHh3e5zZ84YdHdwc5GKTsdFhvuLztjIp4pfci/OLIxC/5F4EeSiQkluML/ZUbZu8a+n5uKy/kXFR/3ewlyNsberv19u23k6YPyZUfBzgrguuDNl0Qaje97Qh+HdRmDYoNPRNMPhlZn8cmj9CrHZwsrPB6E6l7/H52znYbyFjezOrULwJ1NbbumwwAU8PCgZQupOGscupeej3n9148edTVb5edqESv564ibxiFbL1N0drytDQ0ZhhdwprhAe4wsFWhuxCFS6l5VV+AjVqDRr879u3D5GRkTh8+DCio6OhUqkwevRoFBSU3g3u2bMnVq9ejbi4OOzcuROCIGD06NHQaHTf0BqNBuPGjYNSqcTBgwfx/fffY82aNViwYIF4jYSEBIwbNw7Dhg3D6dOnMXv2bMyYMQM7d+4Ux6xfvx5z587FwoULcfLkSXTt2hURERFIS2t6nTyJiIgai1c2xmL0p/9gecwVjF9xACM+3mcU/Jdmpu30AVtjyvyn55WIHyfnFOHPs8li5sv4F/6uga5Y90w/MRsIVN4M7FZ2Ua130C6bafQvk+UL8tAH//rGencKlChWaSGRQKy8iEvJxaaTt5BbrEYbb0dxz++ywX9esQr9lu6ucD6Gr7OH0dfZuOle50BX2MtlcLSzgb1chrfG6dYXf7X/mnjjoCy1RouzN3Nw+NodDP94Hx5YfgA5RSrxJkB7P+cK51QXnr2nLfa8MhQP9QjE8/fomsEZl/tXp5LB8P3lWib4t5fLYGvUrd3L2dZszGePdkPnAN2yg0up+bieofu9+pFegWIX9+t3CnBJv0yiYwsXkHVsZFKxYiK7TPC/4XgStALw17mUKmfK399xEa9sjEXnRbvQ7Z1otH59O5b+ZX5DrTIXU/Kw6eRNCIJgMfNf9qZlVchlUrT31f27ulHPW4VS7WvQ4H/Hjh2YNm0awsLC0LVrV6xZswaJiYk4ceKEOGbmzJkYMmQIWrdujR49euDdd99FUlISrl+/DgDYtWsXLly4gB9//BHdunXDmDFjsGTJEqxYsQJKpe4Hx6pVqxAcHIyPP/4YHTt2RFRUFCZOnIhPP/1U/DyffPIJnnnmGUyfPh2dOnXCqlWr4ODggO+++65e3xMiIqLmZMtpXQb84+hL4rGLKbpAzd2xNCg0/FLamIJ/435xc9fH4oWfTmLB1nMoVKqRnKNrZBfq54zPHu0OQLcW+K1xHQGULm2wZMe5ZAx+PwYDlu5GTHztNQhUaUwDjcCywb8+838qMRtHrt3BLf16fx9nO3QJdAMAfLM/AV/svQIAeKx3S3TRr11fdyQRfxqVjV9Jy0dGvulrLHvzwfAeGH+dQ/1KA02fMlnI0Z18EernDKVai+gLqcguVJqUzF9Jy8PA92Nw//J/8ehXhwEARSoNfjmaiANXdH0MOvjWf/AP6CoOPn6kK8L1QbdMKoG9XPdrdqHS+u/p8oJ/AOJ1Acs9BRxsbTC2cwsAwL+XM5BVqIJMKsE748PRVt/w7ZejSVCqtXCysxG/L8g6bvrKpexC0+BfbnRz5noVdl0AgPXHzJvpfbnvGvZUYTvBjPwSTPryEDadvImJKw9i7oZY/HEm2ezmoqNt9bd09NJXEd3JV2LvxbQa78xBDadRrfnPydHdVfbw8LD4fEFBAVavXo3g4GAEBQUBAA4dOoTOnTvD17e0xCkiIgK5ubk4f/68OGbkyJEm14qIiMChQ4cAAEqlEidOnDAZI5VKMXLkSHFMWSUlJcjNzTX5Q0RERJU7dj0TQGnZP1Aa0BRXo+Hf57sv10kn6jtG2edD+i3vfjycKGb13R3k2DF7iEkTLUM1Q1aZgMAgv0SNVzaegVYAcovVWHPwhsVx1tJoBbOmfOaZ/9LHk746jB3nU8RxHVvogua/41KRmqureBgW6o2u+psCAPDOHxfEj3OLzbOKt4yaBwKl759xhYetjVQsUZ/YM9BkvEQiwTh90DrvtzPo9k403t0eh9Rc3Y2W30/dFudmbOlf8din38JwaAdvs+cbiqH0v6gKN7TK9gWoKPhXGAVx5e1o0E7/Hh/V/1tr5+MEe7lMrP4wfG06tnCGVNp0dthoTAxfm9wymX/jPhqWlstYUt42lJZ6aZS16eRNHEnIxNwNscjTB/xrDiSYZf5rsqWjl75/yNf7r2Ha6mOI/Omk2ZisAmWFjUGpcWg0wb9Wq8Xs2bMxcOBAhIeHmzz3xRdfwMnJCU5OTvjrr78QHR0NW1vdN2FKSopJ4A9AfJySklLhmNzcXBQVFSEjIwMajcbiGMM1ylq6dClcXV3FP4abEURERFSx87d1N8zD/F3FY4bMv1Kttaqp1LlbOfg4+hLe2Hy21ptRpVkINAFdkz/A8rZZ7o66gMBQtp6SU4zc4tLg4MLtXJOMnKEku6YsNRczrD83KBtIfrlPt7a+jZeTSUYeAOQyCdp6OyHIwwFvjNWtaU/JLRZL+cuucwaAhDsFOHztDs7czEZBiRpr9NvNeTiaft6fZvTFTzP6YkRHX7Nr3N/V36Ti4tt/E9D3P7sxZ/1pLN+jq0h478FwTO7b0uxcAGK5e2NgyMpbKr82llWgRP+lMZi/6ax4LEffjM9VYR6wVWUHgXa+pt+b94b7AQCCynxPjLTwNaCqcVPoYhFD40RBEPDIqkNitRMAxCZVLfg3/j/h0Pzh2BI5EAAQl1z5GntL/xZPJmZj7gbTXiVONWjsaGgemqD//yr2Zo7JDatNJ2+i13t/Y/6mM9X+HFQ/Gk3wHxkZiXPnzuGXX34xe+7xxx/HqVOnsG/fPrRv3x6PPPIIiouLLVyl/syfPx85OTnin6SkpAadDxERUVOikMswyqgxmfFa1LKN6ypyzSh4Ng6ya0NanuXfNaIv6Er1LQWahix3ZoESN+4U4J4P92D66mPi8/EpuSbn3swqNNnLvbosvWdl928vmyU23CsZ0t5LzPwbfDqpmzh+5pC2aKnPGBu6/hsCjogwX0Tom/jNWncKj351GI98eQiL/ziPy2m6NeUejqbl/b4u9hio3/avrNZejlj+WA94OpruVLD5VOnuAwPbeuE/D3bGphcGmIxZ/EBYuZnwhuCgz9AXVVL2/3dcKlJyi/Hz0USUqHVjxcy/g6Wy/8qD/5YeDnioRyAe6OqPnbOHYPbI9gCATv4u6NHSDeM6t8DRN0fgmcFtrHpNVMq1TNl/Wl6JWGlhcLmKDfIyC3TX+PPFwWjhqhCrYzLyS8QbbuVJySm9SSmTSsRdPcoq+/+BNTwdzRsFZhYo8cvRREz68hDmboiFRitgw/GbuJaeX+3PQ3WvUeztERUVhW3btuGff/5BYGCg2fOG7Hq7du3Qr18/uLu7Y/PmzXjsscfg5+dn1pU/NVX3Q9nPz0/823DMeIyLiwsUCgVkMhlkMpnFMYZrlGVnZwc7O+s7ZhIREZEuE2lchmpv1KG9WKWpcmOqG0bBf2aBEm4OthWMto6h3Lw8ln7JNmxfmFWoxJqD11Gi1uLEjSyk5BTjSMIdnL+lC54Ht/PC1fR8FCo1SMoqFNdiV5eqijcQ1j3TF/9cysCl1DzExKdBIgGGtPOGi0KO9r5OKFZpsXP2EJPSckBXHp6YWYi45FwMDPESS51dFXKMCW+BXRdSxexlsUqLDcdLt0fUWrnV3bguLTC2sx+0AnD8eiaifj4lNl/0crJFK0/djYjuQW6Yd28HBLk7YEy4n7ijQGNhCP4rW/Nv/O6cvZmDXq09xODfkF021rOVO+JTKg4qJRIJPn6kq9lxOxsZNr0wsJKZU1UYKmkMX6sLt82XAF8rZ0tLY4IgiB3+DZVDjnY2CPJQICmzCJdS89CvjafJOdEXUrH51E08M7gNknN0yww+eaQr7u/qD7lMiqEf7sH1Ms35ahT8O5l/H97ILMTrRtUqBuuPJ2H+mI7V/lxUtxo0+BcEAbNmzcLmzZuxd+9eBAcHV+kcQRBQUqL7IdC/f3+89957SEtLg4+PDwAgOjoaLi4u6NSpkzjmzz//NLlOdHQ0+vfvDwCwtbVFz549sXv3bkyYMAGAbhnC7t27ERUVVVsvl4iIiPTmjmpv8thGJoWNVAK1VrC4NdrX/1zD6aRsPHdPWwS4K8Qg+1JaaZZp44mb2HLqFj56uCsGlJNZLk9SZiEKlGrkFavROcAVcpnUrKFdWT1aupsdMzS3K1RqsO9iunj8oZUHTdYCd2zhglaejohLzsX1jIIaB/9VbSo3oK0XBrT1QlxyLg5dvYOBIZ7inLfNGgytIFi88dKphSt2nk8Vy5CN16QPC/XBysd7YuPxJCTcKTALeMpbz1wRiUQCmQTo28YTO2cPQWaBEjvOJaN7S3cxuy+RSPDC0JBKrtRwDDdQCitZ85+RX5q5PXo90yT4L7vVHwC8NiYUcpkUE7oH1OJsyVpuCtPM/4Vk8+D/VnYRCpVqsf+DJXklaqj1ZTjG/THa+zgjKbNIt3VgmeD/o50XcTE1D3+eLV2e3MJVITYbDA9wNQv+y6u2qQpvJ/OE5/ky/QzGdWmB7WeSkcgdARq1Br1FGhkZiR9//BHr1q2Ds7MzUlJSkJKSgqIi3Q/Ha9euYenSpThx4gQSExNx8OBBPPzww1AoFBg7diwAYPTo0ejUqROmTJmC2NhY7Ny5E2+99RYiIyPFzPxzzz2Ha9euYd68eYiPj8cXX3yBDRs2YM6cOeJc5s6di6+//hrff/894uLi8Pzzz6OgoADTp0+v/zeGiIiomRrS3hvfTu0lNh4zVl7H/zv5JXjvzzhsP5uM+5f/i8lfHxbXmxq2eAOAlXuv4nZOMWasPW7VnNJyizHyk32497P9eHjVIXy57xpSc4vNmlfZyqQY3E73C3SAmwKBZdZPA4CznQ1s9A3UjJckGAf+gC6THuylew8SamHdv6E02FUhx2v3hiLm5XsqHN+xhQsOzR+OLx7vKR6ztZGWW3Fh6B+Qrg9UDZlKQ/bz3nA/fDutN6Ln3CMuEZBJJfh0UldEhFmuoqwqD0dbhPg4IWp4uxoFMPVNbPhXyVZ/xltK/nbiJoqUGuQUlt/wz8VejkUPhFXrpgrVHkO3/6xCJU4lZonLgXq2csevz/UXb1B+Gn0J6gqWMhn6gzjYykz+/YXql+L8eyXDZHxOoQoXU80rP/zd7MWPvY120tgxezDmjwmt0RIPTwvBv2GHDQB4cXgI7u/iDwDiTijUODVo5n/lypUAgKFDh5ocX716NaZNmwZ7e3vs378fn332GbKysuDr64shQ4bg4MGDYpZfJpNh27ZteP7559G/f384Ojpi6tSpeOedd8TrBQcHY/v27ZgzZw6WLVuGwMBAfPPNN4iIiBDHTJo0Cenp6ViwYAFSUlLQrVs37Nixw6wJIBEREVWNpc7PKyZ3h7O9eUADAHY2UuSX6DrrJ2QUYFio7mf91tjbJuPiU/Lw17kUBHs54pKFX4Kt3VrtQnIuSozK5k8mZqGlp3lg7+ogx5rpfbA7LhWtPB0tri+XSCSQ6SsYAIjVDMYC3BRiMz0AuFmmS351GIL/QHcFnh/atkrnWLNEwlAynK/vq1C6Jt30GjKpBC8MbYvXN53FQz0C8GB38+Wcd4uqlv0bB/9X0wuw+I/z4m4KHo61t4yFapdhScaW07dNmvy9MroDerX2gJtCjswCJb7enwCZVIqXRrTDst2XMaqTD3q28sCOc8n4JPqS2HvDvcy/pfHdArBiz1VEX0hFUmYhHO1sMGf9afHmaEsPB6g0WjHY9nUpDf6fGdwG284k44Gu/gj1czFr6Gkt47L/UD9nxKfkibuFdA5wxdzRHXDmZjYAXZNTarwavOy/Iv7+/mbl+pa0atWq0nFDhw7FqVOnKhwTFRXFMn8iIqJaUlgm4+lib1Nu4A+UZv4NXc9jXtZlkQ3d9fu09hAbar1gYaspY2qNtsprwA3Bt52NFCVqLRIzC/HvZV1W68HuAWKzOVeFHDKpBKMryWQb30iYNbwdPv37ksnzD/UIgEQigZ/+l/XKegtUhWHrtroKFl30ncIN6/or2opuUu8gtPN1Rgc/Z7Pn7iblBf9KtRZ/xN6Gq0KOU0lZYvDWr40HDl/LxC/HdE2kB7fzYvDfiFlakvH80Lbo10a3ZfmAEE+x+mfVvquws5Fi1b6rWLXvKr6c0hPP/3QSxqFQ2a91e19n8Xvi77hUpOWViFtaAkDfYA/4utiLu2AYVw34uylw7E3Tbc5rwvjGxPND22LR1vPidqYB+i1F/Vx1/5+l5RVb9f8v1a9G0fCPiIiImp+yQU/ZfefLspOb/rIYl5yH2JvZSMgogIejLVZP7431x5LwzrYLJuN6tnLHiRtZJseu3ylAiE/Vgk9DSf6Q9t6IvpCKm1mF4o2LB7sH4I/Y21BrBXGNb1V1DXRFB7/Stfz+rva4r6s/XhimW6duCP5TaiH4zyzQZY/LdsmvLYZtwvKKDcG/7m9Lwb9EIkHPVub9EO42hrL/sjfBlv4Vh9X6bRCNje8WgMPXSrvFl+2LQY2Lm9FODBIJcPKtUWL/DEB346+VhyNWH0jA7Zxi/HaytAnmsz+cMLueu4V/u10D3XD4WiYupuThz7PJAID+bTyRnFOEx/u1QgdfZ9zMKqzzf28yqQTP3dMWyTlFuL+LP1QaAa9s1G0laFgS5OVoJ1Y6peeXoIVrxf/fU8Ng8E9ERER1ouz+5gGVBP/2NqbrzS+m5uG6PnP2RN+WcLSzwSO9g7DxxE1xyzmpBBjY1tMs+I9Lzqty8G/I/Pdq5Y59F9Oh1GiRmqsLpkNbOMPXxR63sossBrqWfDapG74/dB2fP9Ydfi72eGtcR9wpUOKJfq1M3gNffaYstRbKZEsz/3WzE1Fp2b/ua5pbQeafdBRlMv/f7L+GbWeScTop2+L4XkYBnEQCdLfQUJIaj1A/Z7RwtUdyTjGGd/AxC959XezxzJA2OHc7B1tO37a4vKe9rxMupeqallrqIWJYGmSoBvF3tcePM/pCJi1dcvTZo91r7TVV5PUxoeLHEWG+eGWj6fNSqUT8vzI5p5jBfyPF4J+IiIjqhLWZf3uzzH8ukjJ1naO76bfVc7Kzwa/P9UfYwp0AdMGnpesmZla94/StLN3Ylh4OCPRQmHSrd1XI0cLVuuB/QvcAk07sM8pptGXI/KfllUCrFSCVVn+P+kz9zgSWtuSqDYblGvlKNbRaocKyf9Jx0JdhFyk1yC9R470/48Qyb8MSE2M+zvaYPrA1Vh+4jq+n9Krv6ZKV3BxsEfPyUBy6loHuQeXfqCm7k8cro9sjLiUPQ9t7o2MLF9y//F8Eezoicpj5zhUtyzRGHd7RxyTwbyjO9nI80a8lfj6ahIk9S/t6GP6v5Lr/xovBPxEREdWJssF/gIXMlrGynebP3coRt0Fr71uaxXc02q9aJpWYBKBtvBxxLaPAqu2mDBm5QHcHtPZ0FIN/e7kUdjYytHBTADeyLK7xrQlvZztIJIBaKyCjoAQ+zvaVn1SOzDpe8++sL/sXBF0DRsPaf3cHBv/lMc78X03LhyDovj5rn+qDMH8X7Dyfiud+1JV/uzvI4aKwwRtjO+KZwW0qvVFGjYPCVobhoRU3Bw/xMQ3+H+/byqRK4J9Xh8HHxQ52NuY7bZQN/oe296nBbGvX4gfC8fqYjmJVEFDadDCtFpYyUd1gJwYiIiKqEwVl1jpXFtCU7QOcnFMMlUaAo63MbMmArY3uV5i+bTzRo5U7nO1sMCbcD1HDddmzyjL/527l4MnvjuLMzWyk6butB7grxKZVQGk37+76LdU6tahZx+yy5DIpvPRbaKXmlFQyumJ13fDPzkYqbmE4e/1pALq1x9bsGHC3MQRFucUqXEnTlXa393VCeIArJBIJ2no7imPvae8NiUQCuUzKwL+ZMc78eznZmS0PCPJwsBj4A+b/Zw4I8az9CVaTTCoxCfyB0puE+SUVb29JDYeZfyIiIqoThSWlmX8vJzv0ae1R4fjUvNJskYu9jbjdWXs/Z7Nt9bZGDcRPhxPxSkQHuCrkOLlgFGykEpxM1K39Nw7+lWotrqTl48adAlxMzcPW2Ntidv8ffffsADcFPBxtxWAcKC1pnz6wNUaH+Vbas6A6/FzskZ5XgtTcYnSGa7WvY8j811XDP4lEAid7G2TrO3wDwCsRbEhXkdZeuuD+YkoePBx0e7UbZ4FbepZmdXuwQWKzFezlCB9nO+SXqPH2fR2tOtdwkxMA7uvSQmwi2VgZbgbkVRD8C4KAvZfS0TnA1eT/W6ofjfs7iIiIiJosQ+Z/aAdvrJ7W2yyALytyaAg+2BmPTx7phm//TUBMfBoAXcfrskL9XLBkQrj4WK7fVqqlhy7gup1TBKVaC1sbKRb/cR4/HUms8HP3CdbdmPAyWjNvCP4lEgkC3R0snldTLVztcfZWDm7nmDcDq6rrGQVI1p9fk6UDlXE2Cv6XT+6Onq0qvplztwvVb3WYnFOMTfrtIkOMssB2NjJM6OaPuOQ8PGjUI4KaF1sbKf5++R5IgAq3Oi3Pew+GY098Ot41+v+usTLsClK22euKPVew9fRtfDO1Fw5fu4NXfz2DIe29sfapPg0xzbsag38iIiKqE0X6Nf+OtjaVBv4A8FDPQDykbx61/3KGGPyP6Fj1da5eTrZQyGUoUmlwM6sQ7g62lQb+ANC7tSH4L81E1fYaf0sMNxVuWegE/s+ldBy6dgdD2nmjf9vyy33f3xEPlUbAwBBPBHnUXcm4XFqahRwc4l1nn6e5cHOwhbuDXNwPHTDtXQHUX6d2algu1Qj6DR7v2wqP921Vi7OpO8a7ghSUqBG17iSKVBpxC8tv/03AzvMpAHT/v+WXqM2WDlDd4pp/IiIiqhOGzL+DreX1rBUJcCvNYPcNrvo6V4lEIq7bz8hX4udjlQf+ADBQv5bWuGy+PjrZG7b3Ssoy7VGQX6LGM2uPY+Xeq5i2+qi4V/z52znYGnvbZOwF/baHkcNCqnSTpboMyzAAwEXBX9irwjjwnzU8BP3aNJ4120S1TQz+S9T4I/Y29lxMFwN/AFhz8DqSjXYCOHAlo97neLdj8E9ERER1wtBx37Ma6zof6hmIkR19sWRCuMm616owNJ1KzS3Gt/sTLI5ZPa03hnXQZa8n9QpCK09Hs7nWZ/Bfdg/wXedTxK3gStRaHLhyBwAw7n//4sWfT+HINd1jQRCQqu+s7V/H+2rnFZcGsnV5k6E5mTNS1xfhsT4t8fLoDjXazpGosTOU/ecVq01ufAHmW7kCwL+XGfzXNwb/REREVC0lag0mrjyIqHUnLT5/WB+g9gm2vpmZg60NvpnaC1P6WV/uagj+t5y+hTsFSgR5KHDy7VF4Y2yoOCbExwnvjA/HBxO74N0HS9fSehsF/wrbuv81yVD2H5+SZ7JOtmx2PyY+Vcz+A0DszWwAusZaxSrdTQIfl7ptnlV2X3qq3LP3tMF303rhnfFhDT0VojpnyPwXKNUm1Uyhfs74PXIgQnyc0KmFi/jvwVC1RPWHwT8RERFVy9GETBy/kYVtZ5KRUybLk5JTjOt3CiGVAL0q6fJf25ztdBn7Y9d1nf8Ht/OGh6MtJnQrbaoW4KZAkIcDHukVJDYLBEzL2dWaMnsP1oFA/Rp9pVqL/kt348adAjy15hj2XtTtQrDw/k4AgD3x6biaViCel1mge7/TcnVbBDrb2TT6TuB3I3u5bh944+8xoubKeM2/ofKrnY8TvpnaC6F+LoieMwTbZg1Cf/3yl7jkXGi1df//LJXi/0RERERULRdul2ZtLqXliR8LgoBluy8BAML8XWvU7Ko6DJn/nCJdgNxev72aj4s9fnu+P3bMHlxu+bVxObuqHoJ/4/cmt1iND3ZcFBsdhvg44bE+LaGQy5CSW4ytsbfEsVfS8nEqMQsjP9kHoO6z/gDwwcQuur8f6lLnn4uImh5D2X9+iVrcbvW9BzuLFU4SiQRSqQTBXo6ws5GiUKkx2ZaV6h6DfyIiIqqW00nZ4seXUnXBf6FSjZ3nU/Hz0SRIJcDske3qfV5lt9Nq71faYb1nKw+E+rlU6TrhAVUbV1MvDG0rfrz3Ypr48eQ+LWEvl2FgiBcA4Guj/gXX0vPx7A8nxMd1ucWfwSO9gnBm0Wg80juozj8XETU9hsx/dqEKt7J1fUxaephvk2ojk6KD/v/l87dZ+l+fGPwTERFRtcQaB/8puuB/yrdH8dyPuqD0/q7+GNHRt97nZcj8G5TdXq0yf744GO+MDzNZJlCX5t0bih4t3QAABfrtEZ8aGIypA1oDAO7r0sLsnGsZBUjLKxEf10dzQqBmW5YRUfNmWHKl1grQaAXY2Ujh42y5KilUH/xfNqoao7rHxWFERERkNUEQkJxrtGXT1Ts4nZSNEzeyxGPjOpsHrfXBOPh3d5DDy8rdBjr5u6CTf/1k/Q28y/yC/MKwtpDplyaM7+YPHxc7xMSlIS4lV+z8b8yQZSMiaiiOdqbbuo7r0qLcJVZtvXXLsa6mF1h8nuoGg38iIiKyWqFSA0G/JF4q0a1Bn7DigPh8gJsCQ9p7N8jcjLPTLfVb+DV2xsG/u4Mcno624mOJRIIBbb0woK2u/H/gf2PMgv3x3fzrZ6JEROWwKdPY8ulBweWOFYP/tPw6nROZYtk/ERERWS1fvy2dTCrB9hcHi/vVA8C8ezvg77n3wF4uK+/0OmWc+Q90U1QwsvEwXrPfztfZpPFgWcY3CsZ388eKyT0wTb9EgIiosQjzdy33ubb6RqwXknMx5dsjJludUt1h5p+IiIislles+0XNyc4GHVu4YNusQVh/LAk5RSo8NTC4wQJ/wLThn/FNicbMOKDvG1zx1ojGa2jb+ThhnIWeAEREDalPJf+PBRn937z/cgb++1c8lkwIr+tp3fWY+SciIiKrGTL/hu7Obg62ePaetph3b2iDBv6AaeY/oKkE/0Z9Cfq39axwrPG2fn6uTeP1EdHd4YGu/pBKgAX3dapwnI1MijZepcuyNp28WddTIzD4JyIiomrIK1YBMO+s3xi4KJpe5t/dsXTOPVq6VzjW26l0iUAL17rf4o+IqKo+ergrjr81CuEB5Zf8G3z2aDfMGh4CQLfTiWBoJEN1pvH9xCYiIqJGL19f9t8Yg3/jObVoIpnxHi3dETUsBCE+TpVWTphm/hn8E1HjYWsjhYeNbeUDAXQJdEOwlyM+j7kCAFBqtLCzadjKseau8f3EJiIiokYvr0zZf2Ni3O2/qZT9SyQSvBLRoUpjHWxLfzn2c2HwT0RNl3GwX6xi8F/XGt9PbCIiImr0DJl/J6NAu7GwtZFi8wsDoBVMbwQ0F+4OpVk1x0Z484WIqKrkMgmkEkArACVqDYDm9392Y8KfGERERGS1sg3/Gpvulaybb8oGhXhhSr9W6OTv0tBTISKqEYlEAjsbGYpUGpSotA09nWavcf7EJiIiokbNEPw3xjX/zZ1UKuGWWETUbNjJpbrgX83gv66x2z8RERFZLa+4cWf+iYioabCz0YWkxSpNA8+k+WPwT0RERFYzbPXH4J+IiGrC0OSPmf+6x+CfiIiIrMayfyIiqg32cl1Iqmv4R3WJwT8RERFZzdDtn8E/ERHVBDP/9YfBPxEREVklKbMQZ27lAAD8XBUNPBsiImrKDGv+S7jmv84x+CciIiKrfLP/GpRqLQaGeKJroGtDT4eIiJowO7Hsn5n/usbgn4iIiKySllcCAIgI84NEImng2RARUVMmlv2rGPzXNQb/REREZBWVRgAA2Ej5awQREdUMG/7VH/7UJiIiIquotbrsjI2MWX8iIqoZQ+a/mJn/Osfgn4iIiKyi1mf+5Qz+iYiohsSGf8z81zkG/0RERGQVlUaf+WfZPxER1VBp8M/Mf13jT20iIiKyilrLzD8REdUOO7m+4R+D/zrH4J+IiIisombmn4iIaom9PvNfrGLZf13jT20iIiKyitjtn5l/IiKqITHzz4Z/dY7BPxEREVnF0O1fLuOvEUREVDNs+Fd/+FObiIiIrGLo9m8jZeafiIhqhg3/6g+DfyIiIrKKSp/5t2Hmn4iIasjORlf2zzX/dY8/tYmIiMgqhsw/u/0TEVFN2cmZ+a8vDRr8L126FL1794azszN8fHwwYcIEXLx4UXw+MzMTs2bNQocOHaBQKNCyZUu8+OKLyMnJMblOYmIixo0bBwcHB/j4+ODVV1+FWq02GbN371706NEDdnZ2CAkJwZo1a8zms2LFCrRu3Rr29vbo27cvjh49Wievm4iIqCkTG/6x2z8REdWQIfPP4L/uNehP7X379iEyMhKHDx9GdHQ0VCoVRo8ejYKCAgDA7du3cfv2bXz00Uc4d+4c1qxZgx07duDpp58Wr6HRaDBu3DgolUocPHgQ33//PdasWYMFCxaIYxISEjBu3DgMGzYMp0+fxuzZszFjxgzs3LlTHLN+/XrMnTsXCxcuxMmTJ9G1a1dEREQgLS2t/t4QIiKiJqC04R8z/0REVDP2+sx/VoGygWfS/EkEQRAaehIG6enp8PHxwb59+zBkyBCLYzZu3IgnnngCBQUFsLGxwV9//YX77rsPt2/fhq+vLwBg1apVeO2115Ceng5bW1u89tpr2L59O86dOyde59FHH0V2djZ27NgBAOjbty969+6N5cuXAwC0Wi2CgoIwa9YsvP7665XOPTc3F66ursjJyYGLi0tN3woiIqJGK3zhTuSXqLHnlaEI9nJs6OkQEVETllmgRL//7IZSo8W2WYMQHuDa0FNqUqyJQxtVvZ6hnN/Dw6PCMS4uLrCxsQEAHDp0CJ07dxYDfwCIiIhAbm4uzp8/L44ZOXKkyXUiIiJw6NAhAIBSqcSJEydMxkilUowcOVIcU1ZJSQlyc3NN/hAREd0NVBp9wz92+yciohrycLRFRLgfAODXEzcbeDbNW6MJ/rVaLWbPno2BAwciPDzc4piMjAwsWbIEM2fOFI+lpKSYBP4AxMcpKSkVjsnNzUVRUREyMjKg0WgsjjFco6ylS5fC1dVV/BMUFGTdCyYiImqi1FpDw79G82sEERE1YUPbewMALqflNfBMmrdG81M7MjIS586dwy+//GLx+dzcXIwbNw6dOnXCokWL6ndyFsyfPx85OTnin6SkpIaeEhERUZ0TBAEaffBvwzX/RERUC1q42QMAkrOLG3gmzZtNQ08AAKKiorBt2zb8888/CAwMNHs+Ly8P9957L5ydnbF582bI5XLxOT8/P7Ou/KmpqeJzhr8Nx4zHuLi4QKFQQCaTQSaTWRxjuEZZdnZ2sLOzs/7FEhERNWGGTv8AIGe3fyIiqgX+rgoAQHJOMQRBgETCm8t1oUF/aguCgKioKGzevBkxMTEIDg42G5Obm4vRo0fD1tYWW7duhb29vcnz/fv3x9mzZ0268kdHR8PFxQWdOnUSx+zevdvkvOjoaPTv3x8AYGtri549e5qM0Wq12L17tziGiIiISjv9A8z8ExFR7fBz1cV4RSoNcopUAIDYpGwMWLobX+67CkAXO67YcwXrjiQ22DybugYN/iMjI/Hjjz9i3bp1cHZ2RkpKClJSUlBUVASgNPAvKCjAt99+i9zcXHGMRqMBAIwePRqdOnXClClTEBsbi507d+Ktt95CZGSkmJl/7rnncO3aNcybNw/x8fH44osvsGHDBsyZM0ecy9y5c/H111/j+++/R1xcHJ5//nkUFBRg+vTp9f/GEBERNVLGmX8G/0REVBvs5TJ4OtoCAG5nF0Op1mL8igO4nVOMpX/FAwAOXLmDD3dexBubz2JPPLdjr44GLftfuXIlAGDo0KEmx1evXo1p06bh5MmTOHLkCAAgJCTEZExCQgJat24NmUyGbdu24fnnn0f//v3h6OiIqVOn4p133hHHBgcHY/v27ZgzZw6WLVuGwMBAfPPNN4iIiBDHTJo0Cenp6ViwYAFSUlLQrVs37Nixw6wJIBER0d1MrSnN/LPsn4iIaoufqz3uFCiRnFOErEKlyXMqjRZrD10XH3+06yKGhfrU8wybvgYN/gVBqPD5oUOHVjoGAFq1aoU///yz0mudOnWqwjFRUVGIioqq9PMRERHdrQyd/qUSQMqt/oiIqJa0cFXg/O1cJOcUI6vANPi/mJKHGKNs/4XkXJxMzEK3QDf+LLICb9kTERFRlan0mX8bbvNHRES1KNBd1/QvKbMQp5KyTZ7748xtqLUCPBxtEeCmgCAA//fFQfx68iZK1Bo8+8NxsTcAlY8/uYmIiKjK1Po1/3JmWoiIqBaF+DgBAOJS8nAqMQsA0MHXGQDw24lbAIDwAFcEeSjEczYeT8JvJ25h5/lUsTcAlY/BPxEREVWZods/M/9ERFSbOvjpAv1/LqUjq1AFV4Ucj/UJAgBk5JcAAML9XfBg9wDxHBupFBeSc8THGm3lS8bvZvzJTURERFVm6PYvZ6d/IiKqRe31WX6DyGFt8WD3QMiMKs26BLpiYs8gPDukDQAgMbMQiZlF4vPZZRoFkikG/0RERFRlhrJ/G3b6JyKiWuSqkMPf1R4AEOCmwJP9W8PVQY7JfVoCAO5p740RHX0hk0rw9OBgAEByThFO65cIAECmvlHgnPWn8ciXh1Cs0tTzq2jcGrTbPxERETUtKrHsn5l/IiKqXf3aeGLTqVt4fUwo7OUyAMDC+zthSv9WCPF2Ejv7ezvZQSGXoUilQW6xWjw/I18JV0UxNp/S9QiIvpCK+7v6WzWHEzey8N+/4iCBBJ8+2g0BborKT2oieNueiIiIqkxs+Mc1/0REVMuWTAjHrjlDTAJ2G5kU7X2dTbb0k0gkaOnhYHZ+ZoESJ26UVgLsupBq1edXqrWIWncSx65n4ej1TEz68hCSMgur8UoaJ/7kJiIioipTG7b6Y7d/IiKqZY52NmZr/8vTJ9jD7FhmQQmOXS8N/vfGp1n1+TccT0JyTjEAwN1BDplU0qxudrPsn4iIiKpMpe+kzG7/RETUkN4Y2xEZ+SW4ll6AEF8nbD+TjH2XMvDP5XRxTF6JGoVKNRxsS8NelUaL/ZfT0TnADScTs/DbiZuIS8lFXrEauUUqAMD8MaEY3y0AGkGAn74PQXPA4J+IiIiqzJD5Z7d/IiJqSApbGVY+0RMA8NHOiwCAv+N0Zf5tvB1xLb0AAHAnXwkHD13Ym1WgxKSvDuFSan651x0T7ocZg9uY7DLQXDD4JyIioipTid3+m98vRURE1DR5ONqaPH53fDhe3hiL5JxiZBYocSE5F1tO34JSLVQY+NtIJXjvwc7NMvAHGPwTERGRFdRit3+W/RMRUePg42Jn8jgswBUejrZIzinGrewivPDTSZPnv3+qD5Kzi3AxNQ9Rw0LgbC/H1/uvoUdLd7MbCc0Jg38iIiKqstJu/80zK0JERE3PgLZeJo9dFXJ4OuluCKzad9XkuWcGB+Oe9t5m14gcFlJ3E2wkGPwTERFRlanEbv/M/BMRUeNgKVvvqT925mYOAGBiz0AMbueF+7v4m429W/AnNxEREVWZWsvMPxERNT6rp/WGvVyKZY92A2B+Q+ClEe0wvlsApM10PX9VMPNPREREVaZm5p+IiBqhYaE+iF8yRnxsHPy38XZEkIdDQ0yrUeFPbiIiIqoysds/M/9ERNSIeRoF//eG+TXgTBoPBv9ERERUZYZu/3J2+yciokZMYSsTP57Sv1UDzqTxYNk/ERERVZmY+b+L10wSEVHjN7SDD7oGumJkR1+0cFU09HQaBQb/REREVGVqseyfmX8iImq8XBVybIka1NDTaFT4k5uIiIiqLKtQCQBwUTB/QERE1JQw+CciIqIqu3GnAADQysOxgWdCRERE1mDwT0RE1IAEQWjoKVjlxp1CAEBrT26ZRERE1JQw+CciImogJ25kYeB/Y/DN/msNPZUq0WgFJGXpgv+WDP6JiIiaFAb/RERENSAIAvKKVVafV6TU4KGVB3E7pxj/2325DmZW+5JziqDSCJDLJOycTERE1MQw+CciIqqBHw/fQOdFu7DjXIpV5529lSN+7O1sV9vTqhOGkv8gdwfIuNUfERFRk8Lgn4iIqBo0WgEf77qIt7ecBwDM33TGqvOTc4rEj6WSphFI/37qFgCgYwuXBp4JERERWYvBPxERUTXsu5SGz2OuiI8lVgbwKTnF4sdFKk2tzauu3MouwiZ98P/04OAGng0RERFZi8E/ERFRNdzMKjJ5nF2oRKFSXeXzU3JLg//iJhD8bzyeBI1WQP82nujR0r2hp0NERERWsmnoCRAREdWXEzeysOt8Cp69py08HG1rdK203BKTx1oBiEvOQ89WpoHxhzvjkZpbgkB3Bfq38UTfNp4ATDP/hcrGHfwLgoCNx28CAB7tE9TAsyEiIqLqYPBPRER3hZxCFWZ8fwxZhSrsv5yBP2YNsrppnUYr4E5BCXyc7ZGsD95fjeiA49czsediOs7fzkHPVu64kpaHd7fHYXA7b6zYc1U8/zNcxvX/jgNgmvkvUmkgCILVSwfqS1ahCreydZUOozv5NfBsiIiIqDpY9k9ERHeF1QcTkFWo25LvQnIuzhl126+qD3deRJ/3duPAlQyk5OqC4Rau9ugc4AoA4jXnbzqLvRfTsWTbBbNrJOo75htn/gUBKFFrrZ5PfUnP01U5uDvIobCVNfBsiIiIqDoY/BMR0V3hSlq+yeNUo8x7ZYpVGny08yJW7dNl8Vftuypm/v1c7RGmD/7P3sqFUq3FsetZ5V7r3ysZ0GgFpOWZLhsoasSl/xn5urk2lS0JiYiIyByDfyIiuivcyVeaPC4bfFdk1b6rWL6ntLO/vVwmZu5buCoQrg/+L6fmISY+zeTcpf/XGQPaeoqP1xxMwJFrd6DRCnC2s4GNfulBY+74b8j8ezkx+CciImqquOafiIianLS8YtjLZXCxl1f5nDsFugC2tacDrt8prHLwX6hU47t/E0yOXbidKzbp83Oxh71cCjcHObILVXh/RzwA4Mn+rfDy6A5wVcjxWJ+WSMsrxrj//YtLqfl44tsjAIBB7bxw8Ood5BSpGnXTP2b+iYiImj5m/omIqEm5kpaHez7Yi0dWHbLqvAx95r9jCxcAQHpexWX/u86nIPKnk9h5PgW5xWq4O8gxd1R7ABCb3/m62EFhK4NEIkF7H2cAQEJGAQDgkV5BcFWU3pzwcbbH6/eGAtDtDAAAQzt4QyHXraFvzNv9MfNPRETU9DH4JyKiJmX+prMoUmkQn5KHHw/fQPjCndh3Kb3Cc9QaLbIKTYP/n48mofPCnfj+4HWL50T9fArbzyZjzvpYAEDfYE+8MLStWKYPAAPaeokft/VxKv3Y2xFh/i5m1xwV5mvyeHior9hAr1GX/TPzT0RE1OQx+CcioiZDoxVw4kZpM723fj+H/BI1on46WeF5WYUqCAIgkQDtfZ3F43klavxw+Ib4+O8LqYi+kIrsQiWUZbrvt/dzho1MitZejuKxgSFGwb936fE+wZ4Wt+1zsZfjwe4BkEiATx7pCm9nOzHz31jL/lUaLU7q33Nm/omIiJourvknIqImI69YJZbMmxwvUeNyah7aGQX2xgzr/T0cbNHC1d7kuavp+cgtVuFqWj5mrD0OAAg2CvANOuiv/croDohadxJSiQSD25UG/yFGmf+erdzLfQ3/fagzXh7dHoHuDgBQmvlvpMH/W5vP4bp+e0Jm/omIiJouZv6JiKjJyC5Ulfvcz0eTyn0uI09X8u/pZAsfF9MAVhCAM0k5+MaoqZ9h3b4hKw8AHfx0wf294X7YMXsIfn2+P3xdSm8ktPUuDf57tHQrdy52NjIx8AcAB9v6X/OvVGuRVsWtDvdfLl1SEexpflOEiIiImgYG/0RE1GQY1u0bG9elBQBg06mb5QbQhsy/p6MdfJ3t0TfYA32CPTCus+7clfuuYPuZZLPz5o8NRaC7Aq09HdDKKPAN8XFCl0A3k7GB7go83DMQD/cMtFg5UB77eij7j0/JxYkbmeLjhVvPo/9/Y3DwSkaF5xWrNEjR3yRY9URPtPR0qHA8ERERNV4s+ycioiYju8g88//i8HY4cCUD2YUqXEnLR3iAq9mYtFx9t3pnO0ilEqx/tj8A4Jv917D9bDIOXLkDAHisTxCOXMvENX3mf0RHX/xfj0DIJBLIZRXfL5dIJPjw4a5WvyZDdUFdNfzbeDwJr/56BjZSCY6+ORJuCjl+PpoIAJj8zRF8/HBXPNQz0Oy8nEIVnvr+GLQC4KqQI6JMs0IiIiJqWpj5JyKiJiPHQtl/Ox8nuDvYAig/e379ji6Yb+mhMDnevUx5/pxR7SE16uYf4KaAk52NuC6/LtR12f8Xe68CANRaAd/9m4Cx/9tv8vzLG2Mtvq+rDyaIzRWDvRwtNjAkIiKipqNBg/+lS5eid+/ecHZ2ho+PDyZMmICLFy+ajPnqq68wdOhQuLi4QCKRIDs72+w6mZmZePzxx+Hi4gI3Nzc8/fTTyM/PNxlz5swZDB48GPb29ggKCsIHH3xgdp2NGzciNDQU9vb26Ny5M/78889afb1ERFQzhrL/MH8X2MqkeLB7AKRSiVHHfLXF8wzBf7CXk8nxMP/SKgFHWxl8nO2x6P4wAMAro9vX+vwtsa9k7jWh1miRlFkoPl6+5wriU/LMxl1JNz+WlFkkfmy8vSERERE1TQ0a/O/btw+RkZE4fPgwoqOjoVKpMHr0aBQUFIhjCgsLce+99+KNN94o9zqPP/44zp8/j+joaGzbtg3//PMPZs6cKT6fm5uL0aNHo1WrVjhx4gQ+/PBDLFq0CF999ZU45uDBg3jsscfw9NNP49SpU5gwYQImTJiAc+fO1c2LJyIiqxka/nULcsOJt0fiY32ZvUMlHfMT0g3Bv+madXujhn4t9Wv6B7XzQuzC0XhhaEjtTr4chqqCuljzn5xTDLWl7REALH4gTNyt4Epavtnz2Ub9FSKH1c97QURERHWnQdf879ixw+TxmjVr4OPjgxMnTmDIkCEAgNmzZwMA9u7da/EacXFx2LFjB44dO4ZevXoBAD7//HOMHTsWH330Efz9/fHTTz9BqVTiu+++g62tLcLCwnD69Gl88skn4k2CZcuW4d5778Wrr74KAFiyZAmio6OxfPlyrFq1qg5ePRERWStHv+bf3cEWzvZy8XhFAXSxSoPbObqmdWUz/wDwnwc745PoS/hwYhfxmKtCbjaurrjoX0duUe1n/m/cKTQ7NrFnIJ7s3wph/q5IyCjA/ssZFoP/W9m6zP/qab0xLNSn1udGRERE9avamf8rV65g586dKCrS/XIgCJYzC9bIyckBAHh4eFT5nEOHDsHNzU0M/AFg5MiRkEqlOHLkiDhmyJAhsLW1FcdERETg4sWLyMrKEseMHDnS5NoRERE4dOiQxc9bUlKC3Nxckz9ERM3V+mOJGPjfGFy0UDJuSaFSjdvZRZUPtJKh7N/NwTQ4N2T+Cy2sm//qn2sAABd7G7g7mAf1k/u2xPG3RlpsFFgfPBx1c7K0k0FN3cgsMDvW0sMBXQLdIJNKEOKjuxlSdimAIAi4laX7+gWV6ZNARERETZPVwf+dO3cwcuRItG/fHmPHjkVysm5rpKeffhovv/xytSei1Woxe/ZsDBw4EOHh4VU+LyUlBT4+phkJGxsbeHh4ICUlRRzj62vapdjwuLIxhufLWrp0KVxdXcU/QUFBVZ4zEVFT89pvZ3Eruwgf7oyv0vhZ605h6Id7EZuUXavzMJT9l83MO9jqCtmKyqybT8kpxifRlwAAnfxdGmXTOkOzwsyC2g/+Ey1k/v3dSoP5dvrgf//lDGw+dVM8nlukRl6J7r0McOP2fkRERM2B1cH/nDlzYGNjg8TERDg4lP5CMGnSJLMyfmtERkbi3Llz+OWXX6p9jfo0f/585OTkiH+SkpIaekpERLVCEAS8+PMpjFm2H/klahy7Xro/vJ1N5V3vNVoBu+PToNRo8fqms7U6N8NWf24OtibHyyv7NzT6A4Blj3av1bnUFg9H3Wupi8x/UpYu+Dfe1cDfzV78uFdrD3Hd/5z1sfjs70v44fANvPbbGQCAp6Ntne50QERERPXH6jX/u3btws6dOxEYaLoncLt27XDjxo1qTSIqKkps1Ff2upXx8/NDWlqayTG1Wo3MzEz4+fmJY1JTU03GGB5XNsbwfFl2dnaws7Ozaq5ERE3BzvMp2Bp7GwDw3vY4cU94AGjhqgscC5Vq/Hw0CWPC/UwyyQBMusvHJecip0hVa2voDaXovi6m//86yC03/DMsPRjQ1hO+LvZojNwdSzP/N7MKUazSIMTHuVaufStb1+uga6AbTiVmA9BtX2ggk0rw3bTe6PXu38gpUuGzvy+bnN/J36VW5kFEREQNz+rMf0FBgUnG3yAzM9PqYFgQBERFRWHz5s2IiYlBcHCwtdNB//79kZ2djRMnTojHYmJioNVq0bdvX3HMP//8A5WqdB/j6OhodOjQAe7u7uKY3bt3m1w7Ojoa/fv3t3pORERN1f7L6Xjpl9PiY+PAHyjtjv/cjyexZNsFvPdnnNk1yq4fT80ttnoeaXnFiIlPNeknk1WgREZ+CQCgrbdp4z6HcjL/yfpGf2VvUDQmHvoqhrxiNcYvP4Cxy/612ICvOpL1Nz/aeDuKx/xcTW+CyGVSTB/Y2uTYtAGtsWJyD3zxeI9amQcRERE1PKsz/4MHD8batWuxZMkSAIBEIoFWq8UHH3yAYcOGWXWtyMhIrFu3Dlu2bIGzs7O4vt7V1RUKhe4XtZSUFKSkpODKlSsAgLNnz8LZ2RktW7aEh4cHOnbsiHvvvRfPPPMMVq1aBZVKhaioKDz66KPw9/cHAEyePBmLFy/G008/jddeew3nzp3DsmXL8Omnn4pzeemll3DPPffg448/xrhx4/DLL7/g+PHjJtsBEhE1Z4Ig4L3tcShRa8sdU6zS4FZ2Ef65lA4A2H4mGSsmm465lGoa/N/JVwKmLVXKlZZbjIVbz+Ovc7qfB19O6Ykrafk4lZiFv+N0VV4Bbgo42pn++FLo1/yXDf4NHesbc/DvqpBDKgG0AnBHv+7/s78vYfnkmgXeSrUW6fqbJaM7+WH7mWQEujtYXLoROSwEXQPd0L2lG/JL1Ah05zp/IiKi5sbq4P+DDz7AiBEjcPz4cSiVSsybNw/nz59HZmYmDhw4YNW1Vq5cCQAYOnSoyfHVq1dj2rRpAIBVq1Zh8eLF4nOGLQCNx/z000+IiorCiBEjIJVK8dBDD+F///ufeI6rqyt27dqFyMhI9OzZE15eXliwYIG4zR8ADBgwAOvWrcNbb72FN954A+3atcPvv/9uVfNBIqKm7GhCJuJT8qCQy/DttF6Y/PURszElaq1JEz9nOxsIgiA20tNqBcTEmy7FulNQUuU5LNt9WQz8AeCVDbFi4zmDtj7m2/UZMv9FKtOxhrJ/f9fGWfIPAFKpBO4OtmLgDwC7LqSavK/W0moFpOYWQxAAW5kUPs52WP9s+ZVscplU3M6vbD8FIiIiah6sDv7Dw8Nx6dIlLF++HM7OzsjPz8f//d//ITIyEi1atLDqWlXZHnDRokVYtGhRhWM8PDywbt26Csd06dIF+/fvr3DMww8/jIcffrjSORERNUexN7MBAMNDfdCntQec7WzMAu8StcYkSM0rUeNOgRJeTrplX5tO3cLppGw42soQ4uOE2Js5VnWxv5NvOrbs5wcAS+FweQ3/bjeBzD8AONvbmLyvSrUWuUVquFrYmrAyOYUqjP3ffrHqwc/VHlJp49vlgIiIiOqX1cE/oMukv/nmm7U9FyIiakBqre6GrKOdDDYyKXq1dseei7ry/heHh+B/MVdQotYis0yAnpBRIAb/h67eAQBMHxiMzEIlYm/mmAX0FcktVpkdk8skOPj6CCzYcg5/nUvBY31amo0xZP4z8kvw0c6LGNXJFx1buIgNAo073DdG14225HOwlaFQqUF6fkm1gv9D1zLEwB8AFHJ26yciIqJqNPxbvXo1Nm7caHZ848aN+P7772tlUkREVP80Gl3wL5PqfjR0DXITn/PRd8ovVmmQWaaMPyGjdDu9K2m69f7hAS7wcrR+/3rD1nS9W7uLx/oEe8Db2Q6fTuqGLZEDERFm3kDAEPyfu5WL5Xuu4Onvj+O3kzdRoNTAx9kOrTwdzc5pTAwd+DsHuMJP/14bmhtakninEDvPp0CtMe/PcPZWjsljlbb8Hg5ERER097A6+F+6dCm8vLzMjvv4+OA///lPrUyKiIjqnyHzb6MvEX9qUDB6t3bHrOEhsLPR/bgoUWtNytMBYOPxJBy4kgGtVsBlfZf6EB9ncf/6qgb/ao0Wyfqt6T6c2FU83jXQDYBup4GuQW4W18Er5KaFbBn5JZi/6SwA4OlBwZDLrP5xV69WPN4DD/cMxOrpvcUqijv5SmQXmr53RUoNvtx3FWP/tx/P/nACk785AlWZGwBnb+UCAMZ1boEgDwXeGtexfl4EERERNWpWl/0nJiZa3JKvVatWSExMtHAGERE1BRqtIfOvC65d7OXY+NwAAMDW2NsAgBKVFkq1LiCd2DMQv564iWPXs/D4N0fw3bReKFRqIJdJ0NrTAReS9UFsFRv+peQWQ60VYCuToqWHA3q1csf527kWy/zLMmT+y5LLJHi0Cuc3tG5Bbuimr7TwdNLdNFm49Rwy8pVYMbkHxnXR9dT5Zv81fBx9STzvaEImHl51CCE+Tpg+sDVC/VxwTp/5nzmkjUn1BhEREd3drE6F+Pj44MyZM2bHY2Nj4enpWSuTIiKi+mcoD7ex0BzOXp/5L1ZrxEz+2M5+JmOWx+i2ZG3j5QQbmRSe+sz/setZKFaZNuKzJDFTV/If4K6AVCrB6um9se/VoQjyqHzbOePg/+GegeLH/dp4wlVh/br5hmTI/GfoeyVsPnVTfG7/lQwAwD3tvfF/PQIAAKeTsvHriZv4z59x+Pbfa8gsUMLZzgYd/JzreeZERETUmFkd/D/22GN48cUXsWfPHmg0Gmg0GsTExOCll17Co48+WhdzJCKieiCu+ZeZB/92+qZxJSqtGPz7ONvjzbGlJeUnE7MBAL306/UNZf8arYBXNsYC0O3yYlymbtzg71KKrl9AGy/d+nxne7nYa6AyCqPgv18bT3w2qRs6tnDBgvs6Ven8xsQQ/BtoBV25/2NfHcbRhEwAwKIHwnB/F3+TcQeu3MH7Oy4CAN66ryPs2eiPiIiIjFhd9r9kyRJcv34dI0aMgI2N7nStVosnn3ySa/6JiJoww5p/udT8vrCdUeY/S78O3cPRFs8MaYOIMD8M+XAPAMDZzgYvjWgHAGjj7QiZVAKNVijdBWDNMZy/nYsPHuqCaxkFWLLtAmYOaYM3xnbEhWTdWvUwfxer527c0T4swAWhfi6Y0D3A6us0Boayf4NbWUX461wyDl27Ix5r7emAADcFhnXwhoejHU7cyMT1O4XQaAV4OdliYs+g+p42ERERNXJWB/+2trZYv349lixZgtjYWCgUCnTu3BmtWrWqi/kREVE9Kbvm35gh+M/IK4FKXyFgyOy39HTAuxPCEZ+Si0d7txSz9XY2MpxdNBqdFuzEnQIl3t8Rj736rQOnrzkmXvurf3Sl6mdv6taqd/J3tXrubg62aO/rBKlEgnY+Tbvcveyyi1vZRfjzbLL4OHJYW0gkEtjaSLB6eh8AwH//iseqfVcBAMNDfSx+DYmIiOjuZnXwb9C+fXu0b9++NudCREQNqGy3f2OGEvLcYjUA3Rp747LyJ/pZvgHsYGuDADcFbmUXYeXeq+V+7l9PlK5rr07mXyaV4M8XB0MqkUDaxAPfcV1aYNOpWxjSzgsf7bqE/BI1/o5LAwBsf3EQwizcHHlxRAiOXc/EiRtZ+L8egWbPExEREVUp+J87dy6WLFkCR0dHzJ07t8Kxn3zySa1MjIiI6pdG3/DP4pp/G9OlAO4OtmZjytPK0wG3sovKfX5UJ19EX0gFAPi52CPQXVHlaxuzaeTb+VWVs70cG57tDwBYsecqivTNEgeFeKFTC8s3RhxsbbB+Zj8k5xRXqUEiERER3X2qFPyfOnUKKpWuKdPJkyct7rEMoNzjRETU+FWU+bcr0zzOmg76JerSBn/DQ33w8cNd8eAXB3D9jq67/7yIDihWaZCcU4wPJ3bhzxIjLgobMfj/70OdK3xvbGRSBv5ERERUrioF/3v27BE/3rt3b13NhYiIGlDpmn/zDLp9mcy/NcH/SyPa4cnvjmLOyPZ4aaSuGaCrgy2gD/4D3R2w9qk+DPoteHFEO/xw6AaW/l9nBLozsCciIqLqs2rNv0qlgkKhwOnTpxEeHl5XcyIiogZgTebfzaHqwf+Q9t44+fYouBudY7yywHibPjL1eN9WeLwvG+oSERFRzVkV/MvlcrRs2RIajaau5kNERA1ErdGv+a+g27+BNcE/ULozgIGNheoCIiIiIqo7Vv/29eabb+KNN95AZmZmXcyHiIgaiKaCzL+NVALjwy5WlP1bMne0breYx/pwP3oiIiKi+mD1Vn/Lly/HlStX4O/vj1atWsHR0dHk+ZMnT9ba5IiIqP6IZf8WuuZLJBLYy2UoVOoqv9wUVe/2b0m/Np448sYIeDnZ1eg6RERERFQ1Vgf/48ePZ1MmIqJmqKLMP6Ar/ReDfyvL/i3xdbGv8TWIiIiIqGqsDv4XLVpUB9MgIqKGptYYuv2XF/zLAOi2fbWm2z8RERERNbwqr/kvKCjA888/j4CAAHh7e+PRRx9Fenp6Xc6NiIjqUaWZf3npjww3Bv9ERERETUqVg/+3334bP/zwA+677z5MnjwZMTExmDlzZl3OjYiI6pFaW363fwDwNlqfX9OGf0RERERUv6pc9r9582asXr0aDz/8MADgySefRL9+/aBWq2FjY/XqASIiamTEzL/McvD/7D1tcXztcQCAu2PNGv4RERERUf2qctR+8+ZNDBw4UHzcs2dPyOVy3L59Gy1btqyTyRERUf0xdPuXSS0XhY3s6IMXhrZFQYka/q5s1kdERETUlFQ5+NdqtZDLTcs8bWxsoNFoan1SRERU/wwN/8pb8y+RSDDv3tD6nBIRERER1ZIqB/+CIGDEiBEmJf6FhYW4//77YWtbWv558uTJ2p0hERHVi8rW/BMRERFR01Xl4H/hwoVmx8aPH1+rkyEiooZTWbd/IiIiImq6ahT8ExFR86EWG/5VeSMYIiIiImoi+BseEREBYOafiIiIqDlj8E9ERACMu/0z+CciIiJqbhj8ExERAGb+iYiIiJozBv9ERAQAUGvY7Z+IiIiouapR8F9cXFxb8yAiogZWmvnnfWEiIiKi5sbq3/C0Wi2WLFmCgIAAODk54dq1awCAt99+G99++22tT5CIiOqHyrDmX8bMPxEREVFzY3Xw/+6772LNmjX44IMPYGtrKx4PDw/HN998U6uTIyKi+sM1/0RERETNl9XB/9q1a/HVV1/h8ccfh0wmE4937doV8fHxtTo5IiKqH4IgiME/1/wTERERNT9WB/+3bt1CSEiI2XGtVguVSlUrkyIiovplCPwBZv6JiIiImiOrg/9OnTph//79Zsd//fVXdO/evVYmRURE9UttHPzL2PCPiIiIqLmxsfaEBQsWYOrUqbh16xa0Wi02bdqEixcvYu3atdi2bVtdzJGIiOoYM/9EREREzZvV6Z3x48fjjz/+wN9//w1HR0csWLAAcXFx+OOPPzBq1Ki6mCMREdUx48w/1/wTERERNT9WZ/4BYPDgwYiOjq7tuRARUQMxzvzLJAz+iYiIiJobqzP/SUlJuHnzpvj46NGjmD17Nr766qtanRgREdUftVYLAJBKACkz/0RERETNjtXB/+TJk7Fnzx4AQEpKCkaOHImjR4/izTffxDvvvFPrEyQiorqn1ugy/zZSNvsjIiIiao6s/i3v3Llz6NOnDwBgw4YN6Ny5Mw4ePIiffvoJa9asqe35ERFRPTCU/XO9PxEREVHzZHXwr1KpYGdnBwD4+++/8cADDwAAQkNDkZycXLuzIyKiemFo+MdO/0RERETNk9XBf1hYGFatWoX9+/cjOjoa9957LwDg9u3b8PT0rPUJEhFR3dPo1/zLZAz+iYiIiJojq4P/999/H19++SWGDh2Kxx57DF27dgUAbN26VVwOUFVLly5F79694ezsDB8fH0yYMAEXL140GVNcXIzIyEh4enrCyckJDz30EFJTU03GJCYmYty4cXBwcICPjw9effVVqNVqkzF79+5Fjx49YGdnh5CQEItLFFasWIHWrVvD3t4effv2xdGjR616PURETRUz/0RERETNm9XB/9ChQ5GRkYGMjAx899134vGZM2di1apVVl1r3759iIyMxOHDhxEdHQ2VSoXRo0ejoKBAHDNnzhz88ccf2LhxI/bt24fbt2/j//7v/8TnNRoNxo0bB6VSiYMHD+L777/HmjVrsGDBAnFMQkICxo0bh2HDhuH06dOYPXs2ZsyYgZ07d4pj1q9fj7lz52LhwoU4efIkunbtioiICKSlpVn7FhERNTls+EdERETUvEkEQRAqH2YuPT1dzNJ36NAB3t7eNZ5Meno6fHx8sG/fPgwZMgQ5OTnw9vbGunXrMHHiRABAfHw8OnbsiEOHDqFfv37466+/cN999+H27dvw9fUFAKxatQqvvfYa0tPTYWtri9deew3bt2/HuXPnxM/16KOPIjs7Gzt27AAA9O3bF71798by5csBAFqtFkFBQZg1axZef/31Sueem5sLV1dX5OTkwMXFpcbvBRFRfYpNysb4FQcQ4KbAgdeHN/R0iIiIiKgKrIlDrU7xFBQU4KmnnkKLFi0wZMgQDBkyBP7+/nj66adRWFhY7UkDQE5ODgDAw8MDAHDixAmoVCqMHDlSHBMaGoqWLVvi0KFDAIBDhw6hc+fOYuAPABEREcjNzcX58+fFMcbXMIwxXEOpVOLEiRMmY6RSKUaOHCmOKaukpAS5ubkmf4iImiqx7J9r/omIiIiaJauD/7lz52Lfvn34448/kJ2djezsbGzZsgX79u3Dyy+/XO2JaLVazJ49GwMHDkR4eDgAICUlBba2tnBzczMZ6+vri5SUFHGMceBveN7wXEVjcnNzUVRUhIyMDGg0GotjDNcoa+nSpXB1dRX/BAUFVe+FExE1Atzqj4iIiKh5szr4/+233/Dtt99izJgxcHFxgYuLC8aOHYuvv/4av/76a7UnEhkZiXPnzuGXX36p9jXq0/z585GTkyP+SUpKaugpERFVm1qj6/bPhn9EREREzZONtScUFhaaZcgBwMfHp9pl/1FRUdi2bRv++ecfBAYGisf9/PygVCqRnZ1tkv1PTU2Fn5+fOKZsV37DbgDGY8ruEJCamgoXFxcoFArIZDLIZDKLYwzXKMvOzg52dnbVer1ERI2NWsz8s+EfERERUXNk9W95/fv3x8KFC1FcXCweKyoqwuLFi9G/f3+rriUIAqKiorB582bExMQgODjY5PmePXtCLpdj9+7d4rGLFy8iMTFR/Fz9+/fH2bNnTbryR0dHw8XFBZ06dRLHGF/DMMZwDVtbW/Ts2dNkjFarxe7du61+TURETZGKmX8iIiKiZs3qzP+yZcsQERGBwMBAdO3aFQAQGxsLe3t7k63zqiIyMhLr1q3Dli1b4OzsLK6vd3V1hUKhgKurK55++mnMnTsXHh4ecHFxwaxZs9C/f3/069cPADB69Gh06tQJU6ZMwQcffICUlBS89dZbiIyMFDPzzz33HJYvX4558+bhqaeeQkxMDDZs2IDt27eLc5k7dy6mTp2KXr16oU+fPvjss89QUFCA6dOnW/sWERE1OdfSdVusBrgpGngmRERERFQXrA7+w8PDcfnyZfz000+Ij48HADz22GN4/PHHoVBY90vjypUrAQBDhw41Ob569WpMmzYNAPDpp59CKpXioYceQklJCSIiIvDFF1+IY2UyGbZt24bnn38e/fv3h6OjI6ZOnYp33nlHHBMcHIzt27djzpw5WLZsGQIDA/HNN98gIiJCHDNp0iSkp6djwYIFSElJQbdu3bBjxw6LSxyIiJqb87d1u62EB3CrUiIiIqLmSCIIgtDQk2gOrNlfkYiosRn5yT5cScvH6mm9MSzUp6GnQ0RERERVYE0cWqXM/9atW6v8yR944IEqjyUiooZXqFTjWno+ACDMnzcviYiIiJqjKgX/EyZMqNLFJBIJNBpNTeZDRET1bMvp29AKQKC7Aj4u9g09HSIiIiKqA1UK/rVabV3Pg4iIGsjX+68BAKYPDK5kJBERERE1VdzQmYjoLqbWaMVO/w909W/g2RARERFRXaly8B8TE4NOnTohNzfX7LmcnByEhYXhn3/+qdXJERFR3SpUlS7Vcra3egMYIiIiImoiqhz8f/bZZ3jmmWcsdhB0dXXFs88+i08//bRWJ0dERHWrSKkL/qUSwM6GxWBEREREzVWVf9OLjY3FvffeW+7zo0ePxokTJ2plUkREVD8KStQAAEdbG0gkkgaeDf1/e/cdHlWVuHH8nUnvlTQIoUqTjgrYQJFQRFF2bajgoi4K/gRWRBRF17UXZBUWO6wiKi6igB0pIiA1QOhIpCeUkIT0dn5/hBkYk0AoyYSZ7+d58jwz954598w8Zybzzjn3XAAAgOpS5fCflpYmLy+vSvd7enrq0KFD56VRAICakXt85N/fx8PJLQEAAEB1qnL4r1u3rpKTkyvdv379esXGxp6XRgEAaoY9/Htzvj8AAIArq3L479Onj5588knl5+eX25eXl6fx48fr+uuvP6+NAwBUr9zCsmn//t6M/AMAALiyKg/1jBs3TrNmzdJFF12k4cOHq1mzZpKkLVu2aNKkSSopKdETTzxRbQ0FAJx/J0b+Cf8AAACurMrhPzo6WkuXLtUDDzygsWPHyhgjSbJYLEpMTNSkSZMUHR1dbQ0FAJx/tgX/mPYPAADg2s7o215CQoK++eYbHT16VDt27JAxRk2bNlVYWFh1tQ8AUI3yispG/gNY8A8AAMClndVQT1hYmC655JLz3RYAQA3LKSgL/35ejPwDAAC4siov+AcAcD15xxf8Y+QfAADAtRH+AcCN5Rxf8M+PBf8AAABcGuEfANyYbbX/ABb8AwAAcGmEfwBwY7mFttX+GfkHAABwZYR/AHBjtpF/LvUHAADg2gj/AODGclnwDwAAwC0Q/gHAjdlG/v28CP8AAACujPAPAG4sp8B2zj/T/gEAAFwZ4R8A3JQxRvuO5kmSYkJ8ndwaAAAAVCfCPwC4qSM5hcopLJHFIsWH+zm7OQAAAKhGhH8AcFO7juRKkmKDfeXjyTn/AAAArozwDwBuateRHElSQkSAk1sCAACA6kb4BwA3ZRv5T4jwd3JLAAAAUN0I/wDgphj5BwAAcB+EfwBwU+v3ZkqSmscEObklAAAAqG6EfwBwQ0dzCrXzcNnIf7v4UOc2BgAAANWO8A8AbihpT4YkqVFkgMICvJ3bGAAAAFQ7wj8AuKElOw5LktrXD3NySwAAAFATPJ3dAABAzZm29A+VlBp9sXqvJKlP6xgntwgAAAA1gfAPAG7iaE6hxn+90X4/PtxP3ZpFObFFAAAAqClM+wcAN3Esv9jhfpdGEfKwWpzUGgAAANQkwj8AuIms/CKH+/XC/J3UEgAAANQ0wj8AuIk/j/zXC/NzUksAAABQ0wj/AOAmjjHyDwAA4LYI/wDgJv488h8fzsg/AACAuyD8A4Cb+PPIf1SQr5NaAgAAgJpG+AcAN/HnkX9W+gcAAHAfhH8AcBPHCsrCf/OYIC0a3c25jQEAAECNIvwDgJuwTfvvfXGsEiICnNwaAAAA1CTCPwBcQEpLjYwxZ/XYrOPT/oN8Pc9nkwAAAHABcGr4X7x4sfr166e4uDhZLBbNnj3bYX9aWpoGDx6suLg4+fv7q1evXtq+fbtDmfz8fA0bNkwREREKDAzUgAEDlJaW5lBm9+7d6tu3r/z9/RUVFaXRo0eruNjx3NeFCxeqQ4cO8vHxUZMmTTR16tTqeMoAcNbyi0p07euL9PePVlepfEFxif41d5OW7jgs6cQ5/4R/AAAA9+PU8J+Tk6O2bdtq0qRJ5fYZY9S/f3/t3LlTX331ldauXauEhAT16NFDOTk59nIjR47UnDlzNHPmTC1atEj79+/XzTffbN9fUlKivn37qrCwUEuXLtW0adM0depUPfXUU/YyKSkp6tu3r7p3766kpCSNGDFC9957r77//vvqfQEA4Aws2X5YKYdz9MOmtCqN/n/y2269tyRFd7z3m6QT0/6DfL2qtZ0AAACofZw6/NO7d2/17t27wn3bt2/X8uXLlZycrFatWkmS/vOf/ygmJkYzZszQvffeq8zMTL3//vv65JNPdM0110iSPvzwQ7Vo0ULLly9X586d9cMPP2jTpk366aefFB0drXbt2unZZ5/VmDFj9PTTT8vb21tTpkxRw4YN9dprr0mSWrRooSVLlmjChAlKTEysmRcDAE6joLjUfju3sEQBPqf+CN9+MNt+2xhjH/kPZuQfAADA7dTac/4LCgokSb6+J65DbbVa5ePjoyVLlkiSVq9eraKiIvXo0cNepnnz5qpfv76WLVsmSVq2bJlat26t6Ohoe5nExERlZWVp48aN9jIn12ErY6ujsvZlZWU5/AFAdbKN3EtSRl7RKUqWOflKfpl5RYz8AwAAuLFaG/5tIX7s2LE6evSoCgsL9dJLL2nv3r06cOCAJCk1NVXe3t4KDQ11eGx0dLRSU1PtZU4O/rb9tn2nKpOVlaW8vLwK2/fCCy8oJCTE/hcfH3/OzxkATuVwdoH9dkZu4WnLp+ecKLM7PVdHssvuRwZ5n//GAQAAoFarteHfy8tLs2bN0rZt2xQeHi5/f38tWLBAvXv3ltXq/GaPHTtWmZmZ9r89e/Y4u0kAXNyhYyeH/9OP/O/LyLffTtqToeJSI6tFqhPoUy3tAwAAQO1Vq0/87Nixo5KSkpSZmanCwkLVqVNHl112mTp16iRJiomJUWFhoTIyMhxG/9PS0hQTE2Mvs2LFCod6bVcDOLnMn68QkJaWpuDgYPn5+VXYNh8fH/n48AUaQM05eIbhf3/GiZlLK1LSJUl1gnzk6eH8H1ABAABQsy6Ib4AhISGqU6eOtm/frlWrVunGG2+UVPbjgJeXl+bPn28vu3XrVu3evVtdunSRJHXp0kUbNmzQwYMH7WV+/PFHBQcHq2XLlvYyJ9dhK2OrAwBqg5NH/h/9Yp12HsqutGxBcYlDeVv4jwmp+AdNAAAAuDanhv/s7GwlJSUpKSlJUtkl95KSkrR7925J0syZM7Vw4UL75f6uu+469e/fXz179pRU9qPAkCFDNGrUKC1YsECrV6/WPffcoy5duqhz586SpJ49e6ply5a66667tG7dOn3//fcaN26chg0bZh+5Hzp0qHbu3KlHH31UW7Zs0eTJk/X5559r5MiRNf+iAEAlDp10zn9OYYkG/GdppWX3pDuuV2KbNRAb7FtRcQAAALg4p077X7Vqlbp3726/P2rUKEnSoEGDNHXqVB04cECjRo1SWlqaYmNjdffdd+vJJ590qGPChAmyWq0aMGCACgoKlJiYqMmTJ9v3e3h4aO7cuXrggQfUpUsXBQQEaNCgQfrnP/9pL9OwYUPNmzdPI0eO1MSJE1WvXj299957XOYPQK1hjNHBrAKHbUdzi2SMkSRNXfqHmscEq0vjCEnS2t1HJUmN6gRo56Ec+2NiQgj/AAAA7shibN8ccU6ysrIUEhKizMxMBQcHO7s5AFxMama+Or8wv9z2Xx+7Rqv+SNfDnyZJkjY+k6iUwzn6ePkufbpyj4Ze3VhLdhxS8r6yy5GO7d1cf7+6cU02HQAAANXkTHJorV7wDwBQdq7/Gz9tq3Df2t1HNWvNPvv9295Zrg37Mu33OyaEKTrYR8n7NkmS6oZxzj8AAIA7IvwDQC339JyNmrf+QIX7Plu5R0t/P2K/f3Lwt1rKwn+PFlGqE+Sj9XszdW3z6GpvLwAAAGofwj8A1HInB/87LquvnzcflIfVon0Zefpl++FKH/ds/4sVHuAtSbq+TZyubxNX7W0FAABA7XRBXOoPANxZ2/hQ++1LG4Rr2dhr9NGQSx3K/DTqKof7c4ZfoYGXJdRE8wAAAHABIPwDQC3n51X2UW2xSL0ujpHFYlHDyAD7/kaRAWoSFaRh3csW8nuk50VqXS/EKW0FAABA7cS0fwCo5YpKyi7K8p+BHeXr5SFJslgsuqVTPc1as08v/6WNJOkf1zVT92ZRDjMFAAAAAInwDwC1XlFJqSTJ29PisP1f/VtrdGJz1QnykSRZrRZ1ahBe4+0DAABA7ce0fwCo5Wwj/14ejh/Z3p5We/AHAAAAToXwDwC1nG3k39PKRzYAAADODt8kAaCWK65k2j8AAABQVYR/AKjlKpv2DwAAAFQV3yQBoJYrZNo/AAAAzhHfJAGglmPaPwAAAM4V4R8AajnbtH9G/gEAAHC2+CYJALWcbdq/lycf2QAAADg7fJMEgFrONu3fy4Np/wAAADg7hH8AqMVKSo1Ky2b9y4tp/wAAADhLfJMEgFqs6Piov8S0fwAAAJw9vkkCQC3mEP6Z9g8AAICzRPgHgFrMttK/xLR/AAAAnD2+SQJALWYb+fewWmS1MvIPAACAs0P4B4BarIiV/gEAAHAeEP4BoBazTftnyj8AAADOBd8mAaAWK7aN/LPSPwAAAM4B3yYBoBYrZNo/AAAAzgPCPwDUYrZp/55M+wcAAMA54NskANRitmn/3kz7BwAAwDng2yQA1GK2af+eXOYPAAAA54DwDwC1mH21fw8+rgEAAHD2+DYJALUYq/0DAADgfPB0dgMAAOUdzi6Qp9WiIlv4Z9o/AAAAzgFDSQBQQ4wx9pH8U/lt5xF1eWG++kz8RQXFtkv98XENAACAs8e3SQCoAcUlper1xi+6afJS+2h+RYwxGj5jrYpKjPZn5iszr0gS0/4BAABwbvg2CQA14EhOobamHdOGfZlasv1wpeX2Hs3ToWMF9vvpOYWSmPYPAACAc8M5/wBQA3IKiu2375m6UvXC/NS3TazGJDaX9aRgv3rXUYfHHbWFf6b9AwAA4BzwbRIAakBuYYnD/b1H8/T2op2au+GAw/aVf6Q73D+ay7R/AAAAnDu+TQJADTh55D/A28N+e2tqlv32T5vS9OnKPQ6PO5rLtH8AAACcO8I/ANSAnMKy8N+6bojWje+pMb2aS5L2Hc2TJP1+KFsjP09SSanRTe3rqmNCmCQpwzbyz7R/AAAAnAPO+QeAGpBTUDbtP8DHQ54eVtUN85MkzU7ar61p2dqSmiVjpPb1Q/XyX9ro/v+uknTSgn+ejPwDAADg7BH+AaAG5B4f+Q/wLvvYrRvqZ9+3+UDZ1P+28aF6565O8vKwKtDXS9KJ8O9pZeQfAAAAZ4/wDwA1IPv4yL+/T9nHbr0wP4f9t10Sr/H9Wsnv+HoAgcfL5RWVPe7kHwsAAACAM0X4B4AakHt8wb9An7JwXyfQx76vZ8tovTigjUN5WzmbxFYx1dxCAAAAuDLmkQJADcg+Pu3f//i0f+tJq/d3bx5Vrnygj5f9dovYYNWP8K/mFgIAAMCVOTX8L168WP369VNcXJwsFotmz57tsD87O1vDhw9XvXr15Ofnp5YtW2rKlCkOZfLz8zVs2DBFREQoMDBQAwYMUFpamkOZ3bt3q2/fvvL391dUVJRGjx6t4uJihzILFy5Uhw4d5OPjoyZNmmjq1KnV8ZQBuKlc24J/J13m79P7O+vxPs11a6f4cuUDfU9MzLqkQVj1NxAAAAAuzanhPycnR23bttWkSZMq3D9q1Ch99913+vjjj7V582aNGDFCw4cP19dff20vM3LkSM2ZM0czZ87UokWLtH//ft188832/SUlJerbt68KCwu1dOlSTZs2TVOnTtVTTz1lL5OSkqK+ffuqe/fuSkpK0ogRI3Tvvffq+++/r74nD8Ct2C71F+BzItR3bhSh+69q7DALwCbopHLNYoKqv4EAAABwaU495793797q3bt3pfuXLl2qQYMGqVu3bpKk+++/X2+//bZWrFihG264QZmZmXr//ff1ySef6JprrpEkffjhh2rRooWWL1+uzp0764cfftCmTZv0008/KTo6Wu3atdOzzz6rMWPG6Omnn5a3t7emTJmihg0b6rXXXpMktWjRQkuWLNGECROUmJhY7a8DANeXc/ycf3+fqn3snjzy3zwmuFraBAAAAPdRq8/579q1q77++mvt27dPxhgtWLBA27ZtU8+ePSVJq1evVlFRkXr06GF/TPPmzVW/fn0tW7ZMkrRs2TK1bt1a0dHR9jKJiYnKysrSxo0b7WVOrsNWxlZHRQoKCpSVleXwBwCVyS0sP+3/VIpKSu23GfkHAADAuarV4f/NN99Uy5YtVa9ePXl7e6tXr16aNGmSrrrqKklSamqqvL29FRoa6vC46Ohopaam2sucHPxt+237TlUmKytLeXl5FbbthRdeUEhIiP0vPr78ObsAYGMb+Q+o4sj/yZf2C6ziYwAAAIDK1OpvlG+++aaWL1+ur7/+WgkJCVq8eLGGDRumuLi4ciP1NW3s2LEaNWqU/X5WVhY/AACoVI59wb+qfex2TAjThFvbqmkUo/4AAAA4d7U2/Ofl5enxxx/Xl19+qb59+0qS2rRpo6SkJL366qvq0aOHYmJiVFhYqIyMDIfR/7S0NMXElF0TOyYmRitWrHCo23Y1gJPL/PkKAWlpaQoODpafn58q4uPjIx8fnwr3AcCfnVjwr2rT/i0Wi25qX686mwQAAAA3Umun/RcVFamoqEhWq2MTPTw8VFpadi5sx44d5eXlpfnz59v3b926Vbt371aXLl0kSV26dNGGDRt08OBBe5kff/xRwcHBatmypb3MyXXYytjqAIBzZTvn37+KI/8AAADA+eTUb6HZ2dnasWOH/X5KSoqSkpIUHh6u+vXr6+qrr9bo0aPl5+enhIQELVq0SP/973/1+uuvS5JCQkI0ZMgQjRo1SuHh4QoODtZDDz2kLl26qHPnzpKknj17qmXLlrrrrrv08ssvKzU1VePGjdOwYcPsI/dDhw7VW2+9pUcffVR/+9vf9PPPP+vzzz/XvHnzav5FAeCS8uzhv2oj/wAAAMD55NTwv2rVKnXv3t1+33YO/aBBgzR16lR9+umnGjt2rAYOHKj09HQlJCToueee09ChQ+2PmTBhgqxWqwYMGKCCggIlJiZq8uTJ9v0eHh6aO3euHnjgAXXp0kUBAQEaNGiQ/vnPf9rLNGzYUPPmzdPIkSM1ceJE1atXT++99x6X+QNwXpSWGuUVlYV/P8I/AAAAnMBijDHOboQryMrKUkhIiDIzMxUczDW5AZyQV1iiFk99J0na+ExilVf8BwAAAE7lTHJorT3nHwBchW3UX5J8vRj5BwAAQM0j/ANANbOFf29PqzysFie3BgAAAO6I8A8A1YzF/gAAAOBshH8AqGa28O/HlH8AAAA4CeEfAKqZfaV/wj8AAACchPAPANXMFv5Z7A8AAADOQvgHgGrGOf8AAABwNsI/AFSzfNu0f8I/AAAAnITwDwDVLLeQaf8AAABwLsI/AFQzFvwDAACAsxH+AaCa2ab9c84/AAAAnIXwDwDVLI9p/wAAAHAywj8AVLM8FvwDAACAkxH+AaCa2Rb845x/AAAAOAvhHwCqGef8AwAAwNkI/wBQzTjnHwAAAM7m6ewGAICrKiwu1ba0Y/puY6okpv0DAADAeQj/AFANdh3J0fVvLtGx/GL7tiBfPnIBAADgHHwTBYBq8F1yqj34X9owXM1jgnTVRXWc3CoAAAC4K8I/AFSD31LSJUljezfX369u7OTWAAAAwN2x4B8AnKSk1JyXOlYeD/9dG0eec30AAADAuSL8A8Bx/5q7Se2e+UFz1+9XSanRvPUH9Puh7DOuZ+ehbB0rKFaAt4daxgVXQ0sBAACAM8O0fwCQlFNQrPeWpEiShn+yVn3bpGre+gOyWqT3B1+i7s2iJJVdtu+nzWnKLSyWv7enujSOUGSgj0NdOw/nSJIaRwXKw2qp2ScCAAAAVIDwD8DtHTyWrz4Tlzhsm7f+gCSp1Eifrtit7s2idDArX399e5l2Hcm1l7NYpF6tYjTxtvby9iybTJVyPPw3jAyooWcAAAAAnBrhH4Db+3zlHh3OLpAkXd4kQr/uOCJJCvP30tHcIn2/MU1jZ23QipQj2nUkV0G+nrqkQbhSM/O16UCWvk1OVeo7y9QpIUxDrmiklENl4b9BBOEfAAAAtQPhH4Db23k8rMeH++n9QZdo6tI/VFJqdHeXBLV++gdJ0owVu+3l37u7ky5rFCFJWrDloO797yqt3Z2htbszVFRi7CP/jeoQ/gEAAFA7EP4BuL2UI2VhfWzvFvL18tDQky7N5+VhUVFJ2RUAGkT46/ImkfbgL0ndm0fpu4ev1EMz1mpL6jGt35uh3el5kpj2DwAAgNqD8A/ggnI0p1DfJqfqiiaRqh/hf17q/OP4SH1CBfW9fks7vb8kRa/+tY2aRAVV+Pim0UF68/b2um7CYq3ZnSFJ8va0qlGdwPPSPgAAAOBcEf4BXFAe/ixJi7cdkp+Xh74efrmaRlccyKsqM7dIR3OLJFV8jn6/tnHq1zbutPU0qlO2sn9JadksgQEd6irQh49YAAAA1A5WZzcAAKrqt51HtHjbIUlSXlGJvl63/6zrMsZo3OwN6vvmL5KkqCAfBZxDWPewWhQf5me/f++Vjc66LgAAAOB8I/wDuGDMWV8W9q2Wsvu/bD981nUl78vSx8t3a+/RsvPzW8QGn3P7HuzWRI0iAzTtb5eqMVP+AQAAUIsQ/gFcMJYevwTfMze0kiSt35uhzONT9s/UzNV7HO6PTmx2bo2TdMsl8fr5kW66+qI651wXAAAAcD4R/gHUSvlFJZqzbr/yi0okSXPW7dfOwzmyWqQb2tVVw8gAlRppzZ6jVaovu6BYY2et1ye/7VZ+UYm+SiqbRdC9WR1NubOjLq4bUm3PBQAAAHA2VqMCUCs9PmuDZq3dp2BfT/VtE6sZK8pG6tvXD1OIn5faxYcq5XCOknZnqHuzqFPW9cSXGzT9t92SpBnao/mb05SZV6TYEF+9N+gSedjOIwAAAABcFCP/AJwuv6hES38/rNLjK+Un7cnQrLX7JElZ+cX24B8f7qfX/tpWktQuPlSStG5vRoV1pmXl6/OVe7Qt7Zg9+NvM33JQknRzh7oEfwAAALgFRv4BOJ1tlH9QlwQ9c+PF+nzVngrLvfqXtmoQWXY5Plv4T9qToSPZBfphU5o+WJKiCbe206FjBRr68WoVFJc6PP7ft7fXP+ds0uHsAknSoK4Nqu05AQAAALUJ4R+A05SWGn3wa4p9lH/asl2atmyXff9//3aprmgSqbcX71R+UYkubRhu39ciNlih/l7KyC1Sx3/9ZN9+/ZtLKjzWw9c21Q1t4xQd5KN/zdusR3s1U1SQbzU9MwAAAKB2IfwDqHHGGN39wYpTXqov1N9LXRpHyGq16IFujcvt9/a06ub29fTBrykVPr57szq6pkW0/jV3k/y9PXRT+7qSpMsaRWjOQ1ecnycCAAAAXCAI/wBq3JbUYw7B/+Frm+qBbo319qKd2rAvQ3WCfNX74hh5eZx6WZK7uyTo05W7lVtYdkWAyxqGq6ikVJ5Wq964rb1C/Lx052X1JUkWC+f2AwAAwH0R/gHUuF+2H7Lf/vCeS+yr9T/co+kZ1dMgMkC/PX6tPK1W/brjsK68KFI+nh4OZQj9AAAAAOEfgBPYRv2fvL7laS/TdzpBvl6SpB4to8+5XQAAAICr4lJ/AGrc9rRsSVLHhDAntwQAAABwD4R/ADWqtNTYL7UXE8xq+wAAAEBNIPwDqFEZeUUqLjWSpIhAbye3BgAAAHAPTg3/ixcvVr9+/RQXFyeLxaLZs2c77LdYLBX+vfLKK/Yy6enpGjhwoIKDgxUaGqohQ4YoOzvboZ7169fryiuvlK+vr+Lj4/Xyyy+Xa8vMmTPVvHlz+fr6qnXr1vrmm2+q5TkD7u7QsbJR//AA79Ou5g8AAADg/HDqN++cnBy1bdtWkyZNqnD/gQMHHP4++OADWSwWDRgwwF5m4MCB2rhxo3788UfNnTtXixcv1v3332/fn5WVpZ49eyohIUGrV6/WK6+8oqefflrvvPOOvczSpUt1++23a8iQIVq7dq369++v/v37Kzk5ufqePOCmbOE/klF/AAAAoMZYjDHG2Y2Qykb5v/zyS/Xv37/SMv3799exY8c0f/58SdLmzZvVsmVLrVy5Up06dZIkfffdd+rTp4/27t2ruLg4/ec//9ETTzyh1NRUeXuXhY3HHntMs2fP1pYtWyRJt956q3JycjR37lz7sTp37qx27dppypQpVWp/VlaWQkJClJmZqeDg4LN5CQC38OXavRr52Tpd3iRC0+/t7OzmAAAAABesM8mhF8yc27S0NM2bN09Dhgyxb1u2bJlCQ0PtwV+SevToIavVqt9++81e5qqrrrIHf0lKTEzU1q1bdfToUXuZHj16OBwvMTFRy5Ytq7Q9BQUFysrKcvgDcMI3Gw7oypd/1vq9GQ7bbSP/dQJ9nNAqAAAAwD1dMOF/2rRpCgoK0s0332zflpqaqqgox2uEe3p6Kjw8XKmpqfYy0dGO1/+23T9dGdv+irzwwgsKCQmx/8XHx5/9kwPOs9W70jVs+hrtPpLrtDY8OH2N9qTnadzsE6fPFBSXnAj/QYR/AAAAoKZ4OrsBVfXBBx9o4MCB8vWtHZcGGzt2rEaNGmW/n5WVxQ8ALqq01MhqtTi7GVWSU1CsV77fqqlL/5Ak7Tmaq+dvai1/bw81qhMoqSyA+3h6nJfjbdqfpS2pWeqUEK76Ef727Sf/6LDvaJ4kaUVKuu587zcVlpRKIvwDAAAANemCCP+//PKLtm7dqs8++8xhe0xMjA4ePOiwrbi4WOnp6YqJibGXSUtLcyhju3+6Mrb9FfHx8ZGPD+HF1W1PO6b+k37VnV0SNLZ3C2c3p1KLtx3Suj0ZOppbZA/+krR+b6auf3OJvD2tGt69iVb+ka6Vf6TrnzderL90qGf/USN5X6am/7ZbwX6euqtzgt5dvFM/bkpTXlGJrrqojtKy8tUsOkgjr7tIby/eqfmb02SMtP1g2ZU1PKwW3dS+rro2jtD1beL01oLt9jYcySlU0p4MTZy/zR78LRapTb3QGnt9AAAAAHd3QSz4N3jwYCUnJ2vVqlUO220L/q1atUodO3aUJP3www/q1atXuQX/0tLS5OXlJUl6/PHHNWvWLIcF/3JzczVnzhx73V27dlWbNm1Y8M/N3fr2Mv2Wki5J+uPFvk5uTeUaPDav3LYeLaK1ePshFRaXVviYMH8v9WwZowaRAXrr5+3KKSw54+N6Wi2qH+GvnYdyyu2zWKSKPl2GdW+sm9rXVZOooDM+HgAAAIATziSHOnXkPzs7Wzt27LDfT0lJUVJSksLDw1W/fn1JZU9m5syZeu2118o9vkWLFurVq5fuu+8+TZkyRUVFRRo+fLhuu+02xcXFSZLuuOMOPfPMMxoyZIjGjBmj5ORkTZw4URMmTLDX8/DDD+vqq6/Wa6+9pr59++rTTz/VqlWrHC4HCPdkG9mWpKKS0lp5XfqM3EKH+yevop9dUKziklJ9uXafftl+WIXFpdpzNFe703N1NLdIn63aU2Gd7euH6uFrm0qSlu9M15Idh5S8r2xRy6ggH0UF+6hdfKjuu7KREiICNH9zmr5K2q8lOw4rPadQ3h5WPdmvpdrWC9Goz9dpx/HXsUeLaI1ObF5dLwUAAACASjh15H/hwoXq3r17ue2DBg3S1KlTJUnvvPOORowYoQMHDigkJKRc2fT0dA0fPlxz5syR1WrVgAED9O9//1uBgYH2MuvXr9ewYcO0cuVKRUZG6qGHHtKYMWMc6pk5c6bGjRunP/74Q02bNtXLL7+sPn36VPm5MPJ/YTHGaNOBLDWuEyhfr4rPfz+QmacuL/xsv7/gkW5qGBlQU02sshUp6brl7RNXpvhoyKW6smmdUz6mqKRUK1PS9ePmNO1Jz1XT6CANvaqx9mXkqaikVG3qhchicVzn4Eh2gXy8PBToU/lvhvlFJdq4P0t1Q/0UE1K2PocxRsWlRrmFJQry8bxg1k8AAAAAarszyaG1Ztr/hY7wf2HYmnpM2w8e02870/XR8l2qG+qnWzrF64FujeXt6Tiq/885m/TBryn2+x8M7qRrmkf/ucozZozRvA0HVFJqdF3LaPl7e+pIdoFyC0sUH+5/+gr+5KPlu/Tk8RX1H7qmiUZdd1G54A4AAADA9Vww0/6BmlRYXKpb3l6mzLwi+7Z9GXma8NM2/bz1oB5NbKbLm0TKGKMnZifrk992Syo7r7241CjlcK5KSo2em7dZQb6eGtGjqSwWi4wxWrXrqHw8rZUuYpdfVKJfdxzWxXVD9Mv2w3pk5jpJUr0wPz1748UaNztZh7ML9O3DV6phZECVwvveo7mKCPDR1tSy6fhDr26sf/Rsdo6vEgAAAABXxMj/ecLIf+2360iOrn5loawWKTrYVze2q6uIAG89981me5nEVtGyWiz6NjlVknRT+7qKDvbVlEW/q3OjcFktFi39/YgkqUlUoNIy81VcapRXVCKLRXrx5tbq0zpWWfnFeu37rcrMK9Konhfpsf9t0IZ9mVVqZ1SQj+67spGGXNGw0inyfxzO0bWvL1Kwr6eO5pb9mDHpjg7q2yb2XF4iAAAAABcQRv6BCtiuN98gMkA//6ObfXuDyADNXLVHP2xK0/cbT1zy8f+uaaJRPZtpRUq6piz6Xct3pjvUt+OkxQClspXtx/xvg57/ZosKi0uVV1S2ev78LY6Xo5Sk1nVD9PG9l+mFbzbrs1V7HFbFP3isQM99s1nLdx7Rv29vLw+rRZ5WizxPWmxw5R/pKik19uDfIMJfPVud+ykJAAAAAFwT4R9uY+/x8F8vzPG8+utaRuu6ltF66bst+s/C3xUT7KtHezVT/3Z1JUmXNAhT4zoB+v345exGJzZTmL+3vD2t8vWyauehHF3WMFx//3i1MnKL7KcVBPp4Krug2H6cp65vqY+X79Ku9Fw91a+lQvy89OKANhrWvYmO5BRqf0aesguKlVNQrBe+3aL5Ww7qlreXacfBbDWICNB/h1yq6OCyRfROvgpB4zoB+ueNF9fKKxEAAAAAqB0I/3AbezPKwn/dUL8K94/u2UyXNgxX+/hQhfp727dbLBa9+te2+mjZLo3ocZHqR1S8KN/Sx67R/ox8vbt4pywWaVj3Jnrr5x32y+ld3zZWN3eoqyM5hWpc58TVKOLD/RUf7q928aH2bRdFB2nge79p4/6y8/m3ph3T4A9XatYDXbU85YjeWbxTkvTcTRdr4GUJZ/+iAAAAAHALhH/UCuk5hZrw4zb9pWM9tT0pBJ9Pe4/mSipbZK8iVqtF3ZtFVbivff0wta8fdsr6/b091SQqUC/9pY1929+vbqS56/friqaRigoqG7U/+YeFylzeJFLj+7XU8p1H1K1ZlF77Yas2H8jS+K+T9fmqvfZyF0UHnbYuAAAAACD8o9oUlZTq1x2H1SEhTFsOHNOR7AL1ujhGRSVG3yYf0LUtouXv5aHpv+3Sk19tlCQt2XFYCx7pVq4uY4wOZxdKkl76bovaxYfqzs5nNuJ9Ytp/xeG/OjSqE6jfnughH88zn5J/z+UNdc/lDSVJsSG+GvzhSofgL0kXRRH+AQAAAJwe4R/VoqikVIM+WGFfGd/mlk71FBnoo8kLf1dkoLfa1gt1WBAv5XCO8gpL5OftYd82e+0+PTk7WcdOOn/+i9V79VXSPqXnFCrQ10sfD7lUQb5elbYnr7BEWw6UTaGPD6942n51CfQ597dZt2ZRurJppH7Zfti+bXDXBgrxr/w5AwAAAIAN4R/VYuHWQ+WCvySHkevD2YUVroS/aNshtYoLVny4vwqKS/T6j9scgr/Nyj+OOjzm+jZxlbbnizV7lZVfrPrh/mpbL/QMn03t8Mat7fTqD1t1IDNfr9/STuEBpz99AAAAAAAkwj+qSfLxa9pf2iBcnRtH6Ia2cfoqaZ/e/HmHvUydIB9d2jBcw7s3UYvYYD0yc52+WL1XQz9eLYtF6t4sSj8f/3EgyMdTC0d307SlfygyyEcdE8I0bekf9h8Tvli9V1c0iSx3Pv3OQ9nKLSzRx8t2SZLuubyBPKyWmngJzruIQB+9cHOb0xcEAAAAgD8h/OO8Sc8p1JIdh9WrVYw27i8L/71bx9jPW3+gW2PtOJit/KISjU5srpZxwQ6Pv7tLgr5YXRbmjZE9+EvSXzrVU0Sgj0b1bGbf9vJf2qp7syg9MH2NFm49pFvfXq7vRlwpi8WizQey9P6SFHt9kmSxSDd3qFdtzx8AAAAAaivCP86bF7/dXG5Buovrhthv+3t76j93dqz08W3qhWpY98aatnSXGtUJUGpmvprFBOm+Kxupc6OICh9zScNw++2tacf046Y0Ld5+SB8v312ubJ/WsQrx4xx5AAAAAO7HYowxzm6EK8jKylJISIgyMzMVHBx8+ge4oAaPzXO4b7FIG55OPC8L3p3Kx8t3adzs5HLbL64brNGJzRXq56Vpy/7Q8O5N1KhOYLW2BQAAAABqypnkUEb+cUaMMdp0IEs7D+Vo79E8fbcxVcG+nnrtlrb2Mg0jA9Qgwl+XN4ms9uAvSXd2TlB+UYn+NW+zJKlZdJCuaBqpkdddZD/+6/Htqr0dAAAAAFBbEf5RZTkFxRrzv/Wau/5AuX1jvlgvSWoQ4a8Fj3Sr4ZZJf+lYTytS0nVZowjd07WBrBfoon4AAAAAUB0I/6iStKx8DZm2Usn7smS1SO3rh8kYozW7MyRJC7YeklR23r4zhPp76527Oznl2AAAAABQ2xH+3VBGbqEWbj2ki+uGqElU+XPg07Ly9cZP27VkxyH1bBmj8ABvTV6wQzmFJYoI8NY7d3dUx4SyhfaKS0p1w1u/atOBLEllU/ABAAAAALUL4d/NFJeU6m9TV9pH7J+5oZUaRAbo4+W71L9dXRUUl+iprzYqu6BYkvT+khT7Y1vEBuvtOzuqfoS/fZunh1X/vr2dHpy+Rje2q6tLT1p9HwAAAABQO7Da/3lyoaz2/8ZP2/TGT9tPW65tfKguaxiur5P2KzUrX4/0vEjDujeRxcK59AAAAABQG7DaPyrVICJAgT6eeu6mi7UnPVev/7hNVotFXRpH6JfthyVJ1zaP0rt3d5LVatFjvZorI69I4QHeTm45AAAAAOBsEf7dTP/2dXVF00hFBvpIknq3jpWPp1X1wvz15dq9+mXbYT3Wp7l9tXyr1ULwBwAAAIALHNP+z5MLZdo/AAAAAMA1nEkOtdZQmwAAAAAAgJMQ/gEAAAAAcHGEfwAAAAAAXBzhHwAAAAAAF0f4BwAAAADAxRH+AQAAAABwcYR/AAAAAABcHOEfAAAAAAAXR/gHAAAAAMDFEf4BAAAAAHBxhH8AAAAAAFwc4R8AAAAAABdH+AcAAAAAwMUR/gEAAAAAcHGEfwAAAAAAXBzhHwAAAAAAF0f4BwAAAADAxRH+AQAAAABwcZ7OboCrMMZIkrKyspzcEgAAAACAO7DlT1sePRXC/3ly7NgxSVJ8fLyTWwIAAAAAcCfHjh1TSEjIKctYTFV+IsBplZaWav/+/QoKCpLFYnF2c04pKytL8fHx2rNnj4KDg53dHFwg6Dc4G/QbnA36DVA1vFdwNug3rsUYo2PHjikuLk5W66nP6mfk/zyxWq2qV6+es5txRoKDg3nD44zRb3A26Dc4G/QboGp4r+Bs0G9cx+lG/G1Y8A8AAAAAABdH+AcAAAAAwMUR/t2Qj4+Pxo8fLx8fH2c3BRcQ+g3OBv0GZ4N+A1QN7xWcDfqN+2LBPwAAAAAAXBwj/wAAAAAAuDjCPwAAAAAALo7wDwAAAACAiyP8AwAAAADg4gj/1eiFF17QJZdcoqCgIEVFRal///7aunWrQ5n8/HwNGzZMERERCgwM1IABA5SWlmbfv27dOt1+++2Kj4+Xn5+fWrRooYkTJzrUsWTJEl1++eWKiIiQn5+fmjdvrgkTJpy2fcYYPfXUU4qNjZWfn5969Oih7du3O5R57rnn1LVrV/n7+ys0NLTKz339+vW68sor5evrq/j4eL388ssO+zdu3KgBAwaoQYMGslgseuONN6pct6uj31TebyTpjTfeULNmzeTn56f4+HiNHDlS+fn5VT6Gq3LXfpOfn6/BgwerdevW8vT0VP/+/cuVWbhwoSwWS7m/1NTUKh3Dlblrv1m4cKFuvPFGxcbGKiAgQO3atdP06dMdyrz77ru68sorFRYWprCwMPXo0UMrVqyoUv1wPRf6e+WPP/7QkCFD1LBhQ/n5+alx48YaP368CgsLT1v3woUL1aFDB/n4+KhJkyaaOnWqw/7FixerX79+iouLk8Vi0ezZs09bp7ug31Teb0pKSvTkk0861P3ss8+KteirmUG1SUxMNB9++KFJTk42SUlJpk+fPqZ+/fomOzvbXmbo0KEmPj7ezJ8/36xatcp07tzZdO3a1b7//fffN//3f/9nFi5caH7//Xfz0UcfGT8/P/Pmm2/ay6xZs8Z88sknJjk52aSkpJiPPvrI+Pv7m7fffvuU7XvxxRdNSEiImT17tlm3bp254YYbTMOGDU1eXp69zFNPPWVef/11M2rUKBMSElKl552ZmWmio6PNwIEDTXJyspkxY4bx8/NzaM+KFSvMI488YmbMmGFiYmLMhAkTqlS3O6DfVN5vpk+fbnx8fMz06dNNSkqK+f77701sbKwZOXJklY7hyty132RnZ5uhQ4ead955xyQmJpobb7yxXJkFCxYYSWbr1q3mwIED9r+SkpIqHcOVuWu/ee6558y4cePMr7/+anbs2GHeeOMNY7VazZw5c+xl7rjjDjNp0iSzdu1as3nzZjN48GATEhJi9u7dW6VjwLVc6O+Vb7/91gwePNh8//335vfffzdfffWViYqKMv/4xz9OWe/OnTuNv7+/GTVqlNm0aZN58803jYeHh/nuu+/sZb755hvzxBNPmFmzZhlJ5ssvvzyTl9al0W8q7zfPPfeciYiIMHPnzjUpKSlm5syZJjAw0EycOPGMXmOcGcJ/DTp48KCRZBYtWmSMMSYjI8N4eXmZmTNn2sts3rzZSDLLli2rtJ4HH3zQdO/e/ZTHuummm8ydd95Z6f7S0lITExNjXnnlFfu2jIwM4+PjY2bMmFGu/IcffljlL1WTJ082YWFhpqCgwL5tzJgxplmzZhWWT0hIIPyfAv3mRL8ZNmyYueaaaxweN2rUKHP55ZdX6RjuxF36zckGDRp0yvB/9OjRM67T3bhjv7Hp06ePueeeeyrdX1xcbIKCgsy0adPO+hhwHRfye8Xm5ZdfNg0bNjzlsR999FHTqlUrh2233nqrSUxMrLA84f/U6Dcn+k3fvn3N3/72N4cyN998sxk4cOAp68a5Ydp/DcrMzJQkhYeHS5JWr16toqIi9ejRw16mefPmql+/vpYtW3bKemx1VGTt2rVaunSprr766krLpKSkKDU11eHYISEhuuyyy0557KpYtmyZrrrqKnl7e9u3JSYmauvWrTp69Og51e2O6Dcn+k3Xrl21evVq+9TbnTt36ptvvlGfPn3O6diuyF36zZlo166dYmNjdd111+nXX3+tseNeSNy535yuzbm5uSoqKjplGbgPV3ivnO7YUtn/5pPrlcr+N9fkZ7crod+cqLdr166aP3++tm3bJqns9IYlS5aod+/ep6wb58bT2Q1wF6WlpRoxYoQuv/xyXXzxxZKk1NRUeXt7lztHMTo6utJzUZcuXarPPvtM8+bNK7evXr16OnTokIqLi/X000/r3nvvrbQ9tvqjo6OrfOyqSk1NVcOGDcvVa9sXFhZ2TvW7E/qNY7+54447dPjwYV1xxRUyxqi4uFhDhw7V448/fk7HdjXu1G+qIjY2VlOmTFGnTp1UUFCg9957T926ddNvv/2mDh06VPvxLxTu3G8+//xzrVy5Um+//XalZcaMGaO4uLhyX2jhflzhvbJjxw69+eabevXVVyut11Z3RfVmZWUpLy9Pfn5+p3w8TqDfOPabxx57TFlZWWrevLk8PDxUUlKi5557TgMHDjxl3Tg3jPzXkGHDhik5OVmffvrpWdeRnJysG2+8UePHj1fPnj3L7f/ll1+0atUqTZkyRW+88YZmzJghSZo+fboCAwPtf7/88stZt+HPWrVqZa+XX+rOP/qNo4ULF+r555/X5MmTtWbNGs2aNUvz5s3Ts88+e97a5groN46aNWumv//97+rYsaO6du2qDz74QF27dq3SYkjuxF37zYIFC3TPPffo3XffVatWrSqs48UXX9Snn36qL7/8Ur6+vuetbbgwXejvlX379qlXr17661//qvvuu8++/eR6hw4detbPDRWj3zj6/PPPNX36dH3yySdas2aNpk2bpldffVXTpk0747ah6hj5rwHDhw/X3LlztXjxYtWrV8++PSYmRoWFhcrIyHD4xS8tLU0xMTEOdWzatEnXXnut7r//fo0bN67C49hGTVu3bq20tDQ9/fTTuv3223XDDTfosssus5erW7euDhw4YD9WbGysw7HbtWtX5ef2zTffqKioSJLsv/7GxMQ4rFJqq9e2D1VDvynfb5588knddddd9l+yW7durZycHN1///164oknZLXye6a79Zuzdemll2rJkiXnVIcrcdd+s2jRIvXr108TJkzQ3XffXeHjX331Vb344ov66aef1KZNmyofF67pQn+v7N+/X927d1fXrl31zjvvOOxLSkqy3w4ODrY/r4r+NwcHBzPqfwboN+X7zejRo/XYY4/ptttus7d5165deuGFFzRo0KAKnx/OA2cvOuDKSktLzbBhw0xcXJzZtm1buf22RT6++OIL+7YtW7aUW+QjOTnZREVFmdGjR1f52M8884xJSEg4ZdtiYmLMq6++at+WmZl5XhduKywstG8bO3YsC/5VEf2m8n7ToUMH8+ijjzo87pNPPjF+fn6muLi4SsdxVe7ab05W2YJ/FenRo4e56aabzvgYrsad+82CBQtMQECAeeuttyot89JLL5ng4OBTLrwF9+AK75W9e/eapk2bmttuu63K/zMfffRRc/HFFztsu/3221nwr4roNyf8ud+Eh4ebyZMnO5R5/vnnTdOmTat0DJwdwn81euCBB0xISIhZuHChw+WlcnNz7WWGDh1q6tevb37++WezatUq06VLF9OlSxf7/g0bNpg6deqYO++806GOgwcP2su89dZb5uuvvzbbtm0z27ZtM++9954JCgoyTzzxxCnb9+KLL5rQ0FDz1VdfmfXr15sbb7yx3CWUdu3aZdauXWueeeYZExgYaNauXWvWrl1rjh07Vmm9GRkZJjo62tx1110mOTnZfPrpp+UuN1JQUGCvKzY21jzyyCNm7dq1Zvv27Wf0Grsi+k3l/Wb8+PEmKCjIzJgxw+zcudP88MMPpnHjxuaWW245o9fYFblrvzHGmI0bN5q1a9eafv36mW7dutkfZzNhwgQze/Zss337drNhwwbz8MMPG6vVan766aeqvrwuy137zc8//2z8/f3N2LFjHdp85MgRh2N7e3ubL774wqHM6fojXNOF/l7Zu3evadKkibn22mvN3r17HY5/KrZLto0ePdps3rzZTJo0qdwl244dO2Z/30kyr7/+ulm7dq3ZtWvXGb3Groh+U3m/GTRokKlbt679Un+zZs0ykZGR5QZ5cH4R/quRpAr/PvzwQ3uZvLw88+CDD5qwsDDj7+9vbrrpJoc31Pjx4yus4+Rf8v7973+bVq1aGX9/fxMcHGzat29vJk+efNprWJeWlponn3zSREdHGx8fH3PttdearVu3OpQZNGhQhcdfsGDBKetet26dueKKK4yPj4+pW7euefHFFx32p6SkVFjv1Vdffcp63QH9pvJ+U1RUZJ5++mnTuHFj4+vra+Lj482DDz7IJdyMe/ebhISECh9n89JLL9n7THh4uOnWrZv5+eefT/+iugF37TeVPebk/0GV9avx48dX5aWFi7nQ3ysffvhhpc/hdBYsWGDatWtnvL29TaNGjRyes21/RfUOGjTotHW7OvpN5f0mKyvLPPzww6Z+/frG19fXNGrUyDzxxBMOl3zG+WcxxhgBAAAAAACXxepYAAAAAAC4OMI/AAAAAAAujvAPAAAAAICLI/wDAAAAAODiCP8AAAAAALg4wj8AAAAAAC6O8A8AAAAAgIsj/AMAAAAA4OII/wAAoNoNHjxY/fv3d3YzAABwW57ObgAAALiwWSyWU+4fP368Jk6cKGNMDbUIAAD8GeEfAACckwMHDthvf/bZZ3rqqae0detW+7bAwEAFBgY6o2kAAOA4pv0DAIBzEhMTY/8LCQmRxWJx2BYYGFhu2n+3bt300EMPacSIEQoLC1N0dLTeffdd5eTk6J577lFQUJCaNGmib7/91uFYycnJ6t27twIDAxUdHa277rpLhw8fruFnDADAhYfwDwAAnGLatGmKjIzUihUr9NBDD+mBBx7QX//6V3Xt2lVr1qxRz549dddddyk3N1eSlJGRoWuuuUbt27fXqlWr9N133yktLU233HKLk58JAAC1H+EfAAA4Rdu2bTVu3Dg1bdpUY8eOla+vryIjI3XfffepadOmeuqpp3TkyBGtX79ekvTWW2+pffv2ev7559W8eXO1b99eH3zwgRYsWKBt27Y5+dkAAFC7cc4/AABwijZt2thve3h4KCIiQq1bt7Zvi46OliQdPHhQkrRu3TotWLCgwvUDfv/9d1100UXV3GIAAC5chH8AAOAUXl5eDvctFovDNttVBEpLSyVJ2dnZ6tevn1566aVydcXGxlZjSwEAuPAR/gEAwAWhQ4cO+t///qcGDRrI05OvMAAAnAnO+QcAABeEYcOGKT09XbfffrtWrlyp33//Xd9//73uuecelZSUOLt5AADUaoR/AABwQYiLi9Ovv/6qkpIS9ezZU61bt9aIESMUGhoqq5WvNAAAnIrFGGOc3QgAAAAAAFB9+JkcAAAAAAAXR/gHAAAAAMDFEf4BAAAAAHBxhH8AAAAAAFwc4R8AAAAAABdH+AcAAAAAwMUR/gEAAAAAcHGEfwAAAAAAXBzhHwAAAAAAF0f4BwAAAADAxRH+AQAAAABwcf8PgwZPO1pL9HoAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(12, 6))\n", + "plt.plot(df['timestamp'], df['close'], label='Close Price')\n", + "plt.title('BTC/USDT Close Price Over Time')\n", + "plt.xlabel('Time')\n", + "plt.ylabel('Close Price')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Volume Over Time" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/8AAAIjCAYAAABViau2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydd7wU1f3+n93bKRcsFAsCxgIYFStiL+hVsQYj9oYajZgIaoyJoj81ajS2KErUKDa+KjFWFEQUVEBR1IiNiKKIcCmhXMrltt3fH3tn9syZM31md3b3eb9e97V7d2dnzs5OOc95Pp/PSaTT6TQIIYQQQgghhBBStCTz3QBCCCGEEEIIIYREC8U/IYQQQgghhBBS5FD8E0IIIYQQQgghRQ7FPyGEEEIIIYQQUuRQ/BNCCCGEEEIIIUUOxT8hhBBCCCGEEFLkUPwTQgghhBBCCCFFDsU/IYQQQgghhBBS5FD8E0IIIYQQQgghRQ7FPyGEEFLi9OnTB+edd57+//Tp05FIJDB9+vS8tSksfvjhByQSCYwfPz7fTSECxXSMEUJIoUDxTwghxJHx48cjkUgY/rp3747DDjsMb7zxhr7ceeedZ1pO9ScKzRdffBHHHHMMttxyS1RWVmLrrbfGqaeeirffflvZlr322gu//e1vAQCHHnoofvnLXyqXW7lyJRKJBG688UbD6/PmzcMpp5yC3r17o7q6Gttssw2OPPJI3H///Ybl+vTpo7c3mUyia9eu2HXXXXHxxRfjww8/NCzr53traOLUzd8PP/xg8QsVByeccAI6dOiAdevWWS5z5plnorKyEv/73/9y2LL8smjRIlxyySXo06cPqqqq0L17d5x00kmYOXNmvptmIMh5QAghJHrK890AQgghhcNNN92Evn37Ip1OY9myZRg/fjyOPfZYvPrqqzjuuOPwm9/8BkOGDNGXX7hwIcaMGYOLL74YBx10kP76L37xC6TTaVxwwQUYP3489thjD4wePRo9e/bE0qVL8eKLL+KII47AzJkzsf/+++ufW7p0KT799FPcdNNNvto/a9YsHHbYYdhuu+1w0UUXoWfPnvjpp5/wwQcf4L777sPll19uWH7gwIG48sorAQDr1q3D119/jYkTJ+KRRx7BqFGjcPfddwOAp+8t061bNzz11FOG1+666y4sXrwY99xzj2nZXHDwwQejsbERlZWVOdmexplnnolXX30VL774Is455xzT+xs3bsTLL7+Mo48+GltssUVO25YvZs6ciWOPPRYAcOGFF2LAgAGor6/H+PHjcdBBBymP23zh5TwYNGhQXo4xQggpadKEEEKIA48//ngaQPqjjz4yvL5q1ap0RUVF+owzzlB+7qOPPkoDSD/++OOm9+688840gPQVV1yRTqVSpveffPLJ9Icffmh47Z///Ge6pqYmvXHjxnQ6nU4fcsgh6V122UW57RUrVqQBpG+44Qb9tWOPPTbdrVu39OrVq03LL1u2zPB/796900OHDjUtt3HjxvRJJ52UBpB+8MEHldu2+95uGDp0aLp37962y6RSKX0/BKV3797pc889N5R1BWHjxo3pzp07p+vq6pTvT5gwIQ0g/eyzz7pe58KFCwP9Fvlk1apV6Z49e6Z79OiRXrBggeG9jRs3pg866KB0MplMz5w5M6ftamxsTLe1tTkuF/Q8IIQQEi4M+yeEEOKbrl27oqamBuXl3gLJGhsbcdttt6Ffv37429/+hkQiYVrm7LPPxr777mt4bdKkSTjssMNQU1Pjq73fffcddtllF3Tt2tX0Xvfu3V2to6amBk899RQ233xz/OUvf0E6nfbVFq/06dMHxx13HKZMmYK9994bNTU1+Mc//gEAePzxx3H44Yeje/fuqKqqwoABA/DQQw+Z1pFOp3HLLbdg2223RYcOHXDYYYfhyy+/NC2nysfWUiy++uorHHbYYejQoQO22WYb3HHHHabP//jjjzjhhBPQsWNHdO/eHaNGjcKUKVMcc7xramrwq1/9CtOmTcPy5ctN70+YMAGdO3fGCSecAAD4/vvv8etf/xqbb745OnTogP322w+TJk1y2pU49NBDceihh5peP++889CnTx/9fy0l429/+xvGjh2L7bffHh06dMBRRx2Fn376Cel0GjfffDO23XZb1NTU4MQTT8SqVatM633jjTdw0EEHoWPHjujcuTOGDh2q3O8y//jHP1BfX48777zTFDVSU1ODJ554AolEQo+E+fjjj5FIJPDEE0+Y1qXt/9dee01/7eeff8YFF1yAHj16oKqqCrvssgsee+wxw+e0Y+HZZ5/Fddddh2222QYdOnRAQ0ODY/vtsDvGPv/8cxxyyCHo0KEDdthhB/zrX/8CAMyYMQODBg1CTU0Ndt55Z7z11lum9br5ToQQUqpQ/BNCCHHN2rVrsXLlSqxYsQJffvklLr30Uqxfvx5nnXWWp/W8//77WLVqFc444wyUlZW5+kxLSwveeustPQTaD71798bcuXPxxRdf+F4HAHTq1Aknn3wyfv75Z3z11VeB1uWF+fPn4/TTT8eRRx6J++67DwMHDgQAPPTQQ+jduzf+9Kc/4a677kKvXr3w29/+FmPHjjV8fsyYMbj++uux++67484778T222+Po446Chs2bHC1/dWrV+Poo4/G7rvvjrvuugv9+vXDNddcY6j7sGHDBhx++OF466238Lvf/Q5//vOfMWvWLFxzzTWutnHmmWeitbUVzz//vOH1VatWYcqUKTj55JNRU1ODZcuWYf/998eUKVPw29/+Fn/5y1+wadMmnHDCCXjxxRddbcstzzzzDB588EFcfvnluPLKKzFjxgyceuqpuO666zB58mRcc801uPjii/Hqq6/iqquuMnz2qaeewtChQ9GpUyf89a9/xfXXX4+vvvoKBx54oGMNh1dffRXV1dU49dRTle/37dsXBx54IN5++200NjZi7733xvbbb2/adwDw3HPPYbPNNkNdXR0AYNmyZdhvv/3w1ltvYeTIkbjvvvuwww47YMSIEbj33ntNn7/55psxadIkXHXVVbj11lsjC9dfvXo1jjvuOAwaNAh33HEHqqqqcNppp+G5557DaaedhmOPPRa33347NmzYgFNOOcVQH8LrdyKEkJIjz5EHhBBCCgAt7F/+q6qqSo8fP97yc1Zhv/fdd18aQPrFF1903YZp06alAaQXLlyov+Y17P/NN99Ml5WVpcvKytKDBw9O/+EPf0hPmTIl3dzcbPq8Vdi/xj333JMGkH755ZdN70UR9t+7d+80gPTkyZNNy6vC/+vq6tLbb7+9/v/y5cvTlZWV6aFDhxrSLP70pz+lARjC/t955500gPQ777yjv3bIIYekAaSffPJJ/bWmpqZ0z54908OGDdNfu+uuu9IA0i+99JL+WmNjY7pfv36mdapobW1Nb7XVVunBgwcbXh83blwaQHrKlCnpdDqdvuKKK9IA0u+9956+zLp169J9+/ZN9+nTRw9LV4X9H3LIIelDDjnEtO1zzz3XsN+1z3br1i29Zs0a/fVrr702DSC9++67p1taWvTXTz/99HRlZWV606ZNenu6du2avuiiiwzbqa+vT3fp0sX0ukzXrl3Tu+++u+0yv/vd79IA0p9//rnetoqKivSqVav0ZZqamtJdu3ZNX3DBBfprI0aMSG+11VbplStXGtZ32mmnpbt06aIfU9qxsP3223tOM7E7D+yOsQkTJuivffPNN2kA6WQymf7ggw/016dMmWJat9vvRAghpQqdf0IIIa4ZO3Yspk6diqlTp+Lpp5/GYYcdhgsvvBD//ve/Pa1HCxnu3Lmz68+8/vrrGDBggCEs2ytHHnkkZs+ejRNOOAH/+c9/cMcdd6Curg7bbLMNXnnlFU/r6tSpEwDYVqYPm759++rOrYiYBqFFZxxyyCH4/vvvsXbtWgDAW2+9hebmZlx++eWGNIsrrrjC9fY7depkiPKorKzEvvvui++//15/bfLkydhmm2300HwAqK6uxkUXXeRqG2VlZTjttNMwe/ZsgzM+YcIE9OjRA0cccQSAzPGw77774sADDzS07+KLL8YPP/wQakTGr3/9a3Tp0kX/f9CgQQCAs846y5DyMmjQIDQ3N+Pnn38GAEydOhVr1qzB6aefjpUrV+p/ZWVlGDRoEN555x3b7a5bt87xHNHe186p4cOHo6WlxXBOvvnmm1izZg2GDx8OIJP+8cILL+D4449HOp02tK2urg5r167FJ598YtjOueee6zvdxgudOnXCaaedpv+/8847o2vXrujfv7++34Hsb6Ade36+EyGElBoU/4QQQlyz7777YsiQIRgyZAjOPPNMTJo0CQMGDMDIkSPR3Nzsej21tbUAvAnnSZMmYejQoZ7bLNcT2GefffDvf/8bq1evxpw5c3Dttddi3bp1OOWUUzwJxvXr1wPwNoARlL59+ypfnzlzJoYMGYKOHTuia9eu6NatG/70pz8BgC7+f/zxRwDAjjvuaPhst27dsNlmm7na/rbbbmvan5ttthlWr16t///jjz/iF7/4hWm5HXbYwdU2gEzoP5AR/ACwePFivPfeezjttNP0NJEff/wRO++8s+mz/fv3198Pi+22287wvzYQ0KtXL+Xr2v749ttvAQCHH344unXrZvh78803lXUNRDp37ux4jmjva8fh7rvvjn79+uG5557Tl3nuueew5ZZb4vDDDwcArFixAmvWrMHDDz9satf5558PAKa2WR17YaM6xrp06eK4r/18J0IIKTU41R8hhBDfJJNJHHbYYbjvvvvw7bffYpdddnH1uX79+gEA5s2bh5NOOslx+YULF+Kbb74xFbGrrq5GY2Oj8jMbN27Ul1FRWVmJffbZB/vssw922mknnH/++Zg4cSJuuOEGV99BqxvgRdQGReW8fvfddzjiiCPQr18/3H333ejVqxcqKyvx+uuv45577kEqlQpt+1b1GdIhFz3ca6+90K9fP/zf//0f/vSnP+H//u//kE6n9UGBoCQSCWWb29ralMtbfW+n/aHt+6eeego9e/Y0LedUKLN///749NNP0dTUhKqqKuUyn3/+OSoqKgyDOsOHD8df/vIXrFy5Ep07d8Yrr7yC008/Xd+e1q6zzjoL5557rnK9u+22m+H/XLj+QPB97eU7EUJIqUHxTwghJBCtra0Ask64Gw488EBsttlmurhzKvo3adIkdOnSxRDiDWQK+GnFzmRxMn/+fH0ZJ/bee28AwNKlS121f/369XjxxRfRq1cv3WnOF6+++iqamprwyiuvGBxqOaRc2w/ffvsttt9+e/31FStWGJz7oPTu3RtfffUV0um0wcFdsGCBp/WceeaZuP766/H5559jwoQJ2HHHHbHPPvsYtqP9xiLffPON/r4Vm222mSFVQSPMaAEAeoX+7t27Y8iQIZ4/f9xxx2H27NmYOHGisqjmDz/8gPfeew9DhgwxHP/Dhw/H//t//w8vvPACevTogYaGBkMofbdu3dC5c2e0tbX5alccKcbvRAghYcOwf0IIIb5paWnBm2++icrKSk8iuEOHDrjmmmvw9ddf45prrlG6sE8//TTmzJkDIJPffdRRR5mc0mOPPRYtLS36lHcaqVQKDz30ECorK/UccSAjiFXbev311wFAGUYu09jYiLPPPhurVq3Cn//8Z+U0hblEGzgRv9fatWvx+OOPG5YbMmQIKioqcP/99xuWDbsKel1dHX7++WdDDYVNmzbhkUce8bQezeUfM2YMPvvsM5Prf+yxx2LOnDmYPXu2/tqGDRvw8MMPo0+fPhgwYIDlun/xi1/gm2++wYoVK/TX/vOf/2DmzJme2uhEXV0damtrceutt6KlpcX0vrh9Fb/5zW/QvXt3XH311abBik2bNuH8889HOp3GmDFjDO/1798fu+66K5577jk899xz2GqrrXDwwQfr75eVlWHYsGF44YUXlDNfOLUrjhTjdyKEkLCh808IIcQ1b7zxhu6sLl++HBMmTMC3336LP/7xj3oev1uuvvpqfPnll7jrrrvwzjvv4JRTTkHPnj1RX1+Pl156CXPmzMGsWbPQ2NiId955B+PGjTOt4/jjj8dRRx2FUaNGYc6cOdh///2xceNGvPLKK5g5cyZuueUWdOvWTV/+8ssvx8aNG3HyySejX79+aG5uxqxZs/Dcc8+hT58+em6wxs8//4ynn34aQMbt/+qrrzBx4kTU19fjyiuvxG9+8xuvuzB0jjrqKFRWVuL444/Hb37zG6xfvx6PPPIIunfvbohk6NatG6666ircdtttOO6443Dsscfi008/xRtvvIEtt9wytPb85je/wQMPPIDTTz8dv//977HVVlvhmWee0dMv3A6W9O3bF/vvvz9efvllADCJ/z/+8Y/4v//7PxxzzDH43e9+h8033xxPPPEEFi5ciBdeeAHJpLW/ccEFF+Duu+9GXV0dRowYgeXLl2PcuHHYZZddAs9fL1JbW4uHHnoIZ599Nvbcc0+cdtpp6NatGxYtWoRJkybhgAMOwAMPPGD5+S222AL/+te/MHToUOy555648MILMWDAANTX12P8+PFYsGAB7rvvPuy///6mzw4fPhxjxoxBdXU1RowYYdoft99+O9555x0MGjQIF110EQYMGIBVq1bhk08+wVtvvYVVq1aFth9yRTF+J0IICROKf0IIIa4RHcbq6mr069cPDz30kC8RnEwm8eSTT+LEE0/Eww8/jL/97W9oaGhAt27dcPDBB+OOO+7A4MGDMWnSJDQ1NeGYY45RruOVV17B7bffjmeffRb//ve/UV5ejl133RVPP/20STD+7W9/w8SJE/H666/j4YcfRnNzM7bbbjv89re/xXXXXYeuXbsalv/ss89w9tlnI5FIoHPnzujVqxeOP/54XHjhhdh33309f+co2HnnnfGvf/0L1113Ha666ir07NkTl156Kbp164YLLrjAsOwtt9yC6upqjBs3ThdJb775pq9CilZ06tQJb7/9Ni6//HLcd9996NSpE8455xzsv//+GDZsmGUNBhVnnnkmZs2ahX333ddUW6FHjx6YNWsWrrnmGtx///3YtGkTdtttN7z66quO36d///548sknMWbMGIwePRoDBgzAU089hQkTJmD69Ol+vrYlZ5xxBrbeemvcfvvtuPPOO9HU1IRtttkGBx10kGmwScVBBx2Ezz//HLfeeismTpyIpUuXokuXLth///3x2GOPmVJhNIYPH47rrrsOGzdu1Kv8i/To0QNz5szBTTfdhH//+9948MEHscUWW2CXXXbBX//618DfOx8U43cihJAwSaTDrtJDCCGEhMhvf/tbfPzxx3oKAClM7r33XowaNQqLFy/GNttsk+/mEEIIISUHnX9CCCGxZuDAgTj++OPz3QziAbkA46ZNm/CPf/wDO+64I4U/IYQQkifo/BNCCCEkVI455hhst912GDhwINauXYunn34aX375JZ555hmcccYZ+W4eIYQQUpLQ+SeEEEJIqNTV1eHRRx/FM888g7a2NgwYMADPPvusMvecEEIIIbmBzj8hhBBCCCGEEFLkWM+DQwghhBBCCCGEkKKA4p8QQgghhBBCCClymPMfEqlUCkuWLEHnzp2RSCTy3RxCCCGEEEIIIUVOOp3GunXrsPXWWyOZtPf2Kf5DYsmSJejVq1e+m0EIIYQQQgghpMT46aefsO2229ouQ/EfEp07dwaQ2em1tbV5bg0hhBBCCCGEkGKnoaEBvXr10vWoHRT/IaGF+tfW1lL8E0IIIYQQQgjJGW5Sz1nwjxBCCCGEEEIIKXIo/gkhhBBCCCGEkCKH4p8QQgghhBBCCClymPNPCCGEEEIIIcRAW1sbWlpa8t2MkqesrAzl5eWhTCdP8U8IIYQQQgghRGf9+vVYvHgx0ul0vptCAHTo0AFbbbUVKisrA62H4p8QQgghhBBCCICM47948WJ06NAB3bp1C8VxJv5Ip9Nobm7GihUrsHDhQuy4445IJv1n7lP8E0IIIYQQQggBALS0tCCdTqNbt26oqanJd3NKnpqaGlRUVODHH39Ec3Mzqqurfa+LBf8IIYQQQgghhBig4x8fgrj9hvWEshZCCCGEEEIIIYTEFop/QgghhBBCCCGkyKH4J4QQQgghhBBS0vTp0wf33ntvvpsRKRT/hBBCCCGEEEIKluOPPx5HH3208r333nsPiUQCn3/+eY5bFT8o/gkhhBBCCCGEFCwjRozA1KlTsXjxYtN7jz/+OPbee2/stttueWhZvKD4J4QQQgghhBCiJp0GWjfk5y+ddtXE4447Dt26dcP48eMNr69fvx4TJ07EiBEj8MILL2CXXXZBVVUV+vTpg7vuustyfT/88AMSiQQ+++wz/bU1a9YgkUhg+vTpAIDp06cjkUhgypQp2GOPPVBTU4PDDz8cy5cvxxtvvIH+/fujtrYWZ5xxBjZu3KivJ5VK4bbbbkPfvn1RU1OD3XffHf/6179c/xxBKM/JVgghhBBCCCGEFB5tG4HnO+Vn26euB8o7Oi5WXl6Oc845B+PHj8ef//xnfZrCiRMnoq2tDf3798fhhx+OG2+8EcOHD8esWbPw29/+FltssQXOO++8QE288cYb8cADD6BDhw449dRTceqpp6KqqgoTJkzA+vXrcfLJJ+P+++/HNddcAwC47bbb8PTTT2PcuHHYcccd8e677+Kss85Ct27dcMghhwRqixMU/4QQQgghhBBCCpoLLrgAd955J2bMmIFDDz0UQCbkf9iwYXj44YdxxBFH4PrrrwcA7LTTTvjqq69w5513Bhb/t9xyCw444AAAmfSDa6+9Ft999x223357AMApp5yCd955B9dccw2amppw66234q233sLgwYMBANtvvz3ef/99/OMf/6D4J4QQkiNSLcCqucDmewNJ3h4IIYQQAqCsQ8aBz9e2XdKvXz/sv//+eOyxx3DooYdiwYIFeO+993DTTTdh9OjROPHEEw3LH3DAAbj33nvR1taGsrIy300Uawn06NEDHTp00IW/9tqcOXMAAAsWLMDGjRtx5JFHGtbR3NyMPfbYw3cb3MLeHSGEkAwfXgQsfALodyWw59/y3RpCCCGExIFEwlXofRwYMWIELr/8cowdOxaPP/44fvGLX/hy05PJTGm8tFBzoKWlRblsRUWF/jyRSBj+115LpVIAMjUIAGDSpEnYZpttDMtVVVV5bqdXWPCPEEJIhoVPZB6/sS6AQwghhBASV0499VQkk0lMmDABTz75JC644AIkEgn0798fM2fONCw7c+ZM7LTTTkrXv1u3bgCApUuX6q+Jxf/8MmDAAFRVVWHRokXYYYcdDH+9evUKvH4n6PwTQgghhBBCCCl4OnXqhOHDh+Paa69FQ0ODns9/5ZVXYp999sHNN9+M4cOHY/bs2XjggQfw4IMPKtdTU1OD/fbbD7fffjv69u2L5cuX47rrrgvcvs6dO+Oqq67CqFGjkEqlcOCBB2Lt2rWYOXMmamtrce655wbehh10/gkhhBBCCCGEFAUjRozA6tWrUVdXh6233hoAsOeee+L555/Hs88+i1/+8pcYM2YMbrrpJttif4899hhaW1ux11574YorrsAtt9wSSvtuvvlmXH/99bjtttvQv39/HH300Zg0aRL69u0byvrtSKTTLidPJLY0NDSgS5cuWLt2LWpra/PdHEII8c6ERPb5Gbw1EEIIIaXIpk2bsHDhQvTt2xfV1dX5bg6B/W/iRYfS+SeEEEIIIYQQQoocin9CCCGEEEIIIaTIofgnhBBCCCGEEEKKHIp/QgghhBBCCCGkyKH4J4QQQgghhBBigHXh40NYvwXFPyGEEEIIIYQQAEBZWRkAoLm5Oc8tIRobN24EAFRUVARaT3kYjSGEEEIIIYQQUviUl5ejQ4cOWLFiBSoqKpBM0i/OF+l0Ghs3bsTy5cvRtWtXfWDGLxT/hBBCCCGEEEIAAIlEAltttRUWLlyIH3/8Md/NIQC6du2Knj17Bl4PxT8hhBBCCCGEEJ3KykrsuOOODP2PARUVFYEdfw2Kf0IIIYQQQgghBpLJJKqrq/PdDBIiTOAghBBCCCGEEEKKHIp/QgghhBBCCCGkyKH4J4QQQgghhBBCihyKf0IIIYQQQgghpMih+CeEEEIIIYQQQoocin9CCCGEEEIIIaTIofgnhBBCCCGEEEKKHIp/QgghhBBCCCGkyKH4J4QQQgghhBBCihyKf0IIIYQQQgghpMih+CeEEEIIIYQQQoocin9CCCGEEEIIIaTIofgnhBBCCCGEEEKKHIp/QgghhBBCCCGkyKH4J4QQQgghhBBCihyKf0IIIYQQQgghpMih+CeEEEIIIYQQQoocin9CCCGEEEIIIaTIofgnhBBCCCGEEEKKHIp/QgghhBBCCCGkyKH4J4QQQgghhBBCihyKf0IIIYQQQgghpMih+CeEEEIIIYQQQoocin9CCCGEEEIIIaTIofgnhBBCCCGEEEKKHIp/QgghhBBCCCGkyMm7+P/5559x1llnYYsttkBNTQ123XVXfPzxx/r76XQaY8aMwVZbbYWamhoMGTIE3377rWEdq1atwplnnona2lp07doVI0aMwPr16w3LfP755zjooINQXV2NXr164Y477jC1ZeLEiejXrx+qq6ux66674vXXX4/mSxNCCCGEEEIIITkkr+J/9erVOOCAA1BRUYE33ngDX331Fe666y5sttlm+jJ33HEH/v73v2PcuHH48MMP0bFjR9TV1WHTpk36MmeeeSa+/PJLTJ06Fa+99hreffddXHzxxfr7DQ0NOOqoo9C7d2/MnTsXd955J2688UY8/PDD+jKzZs3C6aefjhEjRuDTTz/FSSedhJNOOglffPFFbnYGIYQQQgghhBASEYl0Op3O18b/+Mc/YubMmXjvvfeU76fTaWy99da48sorcdVVVwEA1q5dix49emD8+PE47bTT8PXXX2PAgAH46KOPsPfeewMAJk+ejGOPPRaLFy/G1ltvjYceegh//vOfUV9fj8rKSn3bL730Er755hsAwPDhw7Fhwwa89tpr+vb3228/DBw4EOPGjXP8Lg0NDejSpQvWrl2L2traQPuFEELywoRE9vkZebs1EEIIIYQQl3jRoXl1/l955RXsvffe+PWvf43u3btjjz32wCOPPKK/v3DhQtTX12PIkCH6a126dMGgQYMwe/ZsAMDs2bPRtWtXXfgDwJAhQ5BMJvHhhx/qyxx88MG68AeAuro6zJ8/H6tXr9aXEbejLaNtR6apqQkNDQ2GP0IIIYQQQgghJI7kVfx///33eOihh7DjjjtiypQpuPTSS/G73/0OTzzxBACgvr4eANCjRw/D53r06KG/V19fj+7duxveLy8vx+abb25YRrUOcRtWy2jvy9x2223o0qWL/terVy/P358QQgghhBBCCMkFeRX/qVQKe+65J2699VbsscceuPjii3HRRRe5CrPPN9deey3Wrl2r//3000/5bhIhhBBCCCGEEKIkr+J/q622woABAwyv9e/fH4sWLQIA9OzZEwCwbNkywzLLli3T3+vZsyeWL19ueL+1tRWrVq0yLKNah7gNq2W092WqqqpQW1tr+COEEEIIIYQQQuJIXsX/AQccgPnz5xte++9//4vevXsDAPr27YuePXti2rRp+vsNDQ348MMPMXjwYADA4MGDsWbNGsydO1df5u2330YqlcKgQYP0Zd599120tLToy0ydOhU777yzPrPA4MGDDdvRltG2QwghhBBCCCGEFCp5Ff+jRo3CBx98gFtvvRULFizAhAkT8PDDD+Oyyy4DACQSCVxxxRW45ZZb8Morr2DevHk455xzsPXWW+Okk04CkIkUOProo3HRRRdhzpw5mDlzJkaOHInTTjsNW2+9NQDgjDPOQGVlJUaMGIEvv/wSzz33HO677z6MHj1ab8vvf/97TJ48GXfddRe++eYb3Hjjjfj4448xcuTInO8XQgghhBBCCCEkTPI61R8AvPbaa7j2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hUK49957fR+7LcB9x73vAMC9996Lfv36IT09HV26dMHvf/97VFZW+j5HvNJW+01lZSXOP/98DB48GElJSZgxY4Zjn8WLFyMUCjn+tm3b5usc8Uxb7TeLFy/G9OnTUVJSgszMTAwbNgzz5s1T9nnkkUdwxBFHID8/H/n5+ZgyZQqWLFni6/hM/NHan5UffvgBv/71r9GjRw+kp6ejV69emDNnDqqrq6Mee/HixRgxYgRSU1PRu3dv/Otf/1I+/+CDDzBt2jR07NgRoVAIL7/8ctRjthW437j3m7q6Otxwww3KsW+55RZwLvomxmKahKlTp1qPP/64tWrVKmvFihXW8ccfb3Xt2tXat29fZJ9LLrnE6tKli7Vw4UJr6dKl1pgxY6xx48ZFPv/nP/9p/fa3v7UWL15srVu3znryySet9PR06/7774/ss2zZMuupp56yVq1aZW3YsMF68sknrYyMDOsf//iHZ/vuuOMOKzc313r55ZetlStXWieddJLVo0cP68CBA5F9Zs+ebd19993WrFmzrNzcXF+/u7S01CoqKrLOOecca9WqVdbTTz9tpaenK+1ZsmSJ9Yc//MF6+umnreLiYuuee+7xdey2Avcd974zb948KzU11Zo3b561YcMGa8GCBVZJSYn1+9//3tc54pm22m/27dtnXXLJJdbcuXOtqVOnWtOnT3fss2jRIguAtXr1amvr1q2Rv7q6Ol/niGfaar+59dZbreuvv976+OOPrbVr11r33nuvlZCQYL322muRfc4++2zrwQcftJYvX259++231vnnn2/l5uZamzdv9nUOJr5o7c/KW2+9ZZ1//vnWggULrHXr1lmvvPKKVVhYaF111VWex12/fr2VkZFhzZo1y/rmm2+s+++/30pMTLTmz58f2efNN9+0rrvuOuvFF1+0AFgvvfRSkEsb13C/ce83t956q9WuXTvr9ddftzZs2GA9//zzVlZWlnXfffcFusZMMFj4byZ27NhhAbDef/99y7Isa+/evVZycrL1/PPPR/b59ttvLQDWp59+6nqcSy+91Jo0aZLnuU4++WTrl7/8pevn9fX1VnFxsfW3v/0tsm3v3r1Wamqq9fTTTzv2f/zxx30vqB566CErPz/fqqqqimz74x//aPXr18+4f7du3Vj4jwL3HbvvXHbZZdZRRx2lfG/WrFnW4Ycf7uscbYm2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(12, 6))\n", + "plt.plot(df['timestamp'], df['volume'], label='Volume', color='orange')\n", + "plt.title('BTC/USDT Trading Volume Over Time')\n", + "plt.xlabel('Time')\n", + "plt.ylabel('Volume')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Distribution of Closing Prices" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAHWCAYAAAB9mLjgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB5R0lEQVR4nO3dd3hTZf8G8Du76d6LTkqhUPZegiJShoiCP5nKElRARRAV9RXBgYgiiiCIylABQQF5VUBky6ZsKKWUQqGTdKVtOpPn90dtXkMLNF1J2/tzXbnanPOck2+eJm3unuc8RyKEECAiIiIiIqIKk1q6ACIiIiIiorqGQYqIiIiIiMhMDFJERERERERmYpAiIiIiIiIyE4MUERERERGRmRikiIiIiIiIzMQgRUREREREZCYGKSIiIiIiIjMxSBEREREREZmJQYqI6qR3330XEomkVh7rwQcfxIMPPmi8v2/fPkgkEvz888+18vjjxo1DUFBQrTxWZeXk5ODZZ5+Ft7c3JBIJpk+fbumSqIJq+r0kkUjw7rvv1tj+a9Lq1ashkUhw/fp1S5dCRFaIQYqILK70w0rpzcbGBr6+voiIiMAXX3yB7OzsanmcxMREvPvuuzhz5ky17K86WXNtFfHhhx9i9erVeOGFF/D999/j6aefvmvboKCgMj/v0NBQzJo1C+np6QCA69evm7S51630Q25KSgpeffVVhIWFwdbWFnZ2dujQoQPef/99ZGZmlqnjv//9L6RSKZKTk+8bjqdNm1YmbBQWFuLzzz9Hu3bt4OjoCGdnZ4SHh2Py5Mm4fPmysZ05r+/KPO+7yc/Px2effYYuXbrAyckJNjY2aNq0KaZNm4YrV67cc9v64M6+lMlkCAgIwBNPPFFn32dEZF3kli6AiKjUvHnzEBwcjKKiIuOH2+nTp2PRokXYtm0bWrdubWz79ttv44033jBr/4mJiZg7dy6CgoLQtm3bCm/3559/mvU4lXGv2lauXAmDwVDjNVTFnj170LVrV8yZM6dC7du2bYuZM2cCKPnAHxkZicWLF2P//v04fvw4PDw88P3335ts8+mnn+LWrVv47LPPTJZ7eHjgxIkTGDhwIHJycjBmzBh06NABAHDy5El89NFHOHDgQJmf4++//44OHTrA29vbJPhU1LBhw7B9+3aMHDkSkyZNQlFRES5fvozffvsN3bt3R1hYmEn7iry+zX3ed6PRaNC/f39ERkbi0UcfxahRo2Bvb4/o6Ghs2LABX3/9NQoLC81+zpWRl5cHudxyHzdGjhyJgQMHQq/XIyoqCl999RW2b9+Oo0eP3vf3wNNPP40RI0ZApVLVTrFEVLcIIiILW7VqlQAgTpw4UWbd7t27hVqtFoGBgUKn01XpcU6cOCEAiFWrVlWofW5ubrnL9+7dKwCITZs2VameqtRmbYKDg8WgQYMq1DYwMLDctq+++qoAIK5cuVLudoMGDRKBgYFllmdkZIhGjRoJLy8vERUVVWZ9cnKyeO+998os9/f3F3PmzBFC3P9nOnXqVPHvP5nHjx8XAMQHH3xQpm1xcbHQaDTG+1V9fd/ted/LoEGDhFQqFT///HOZdfn5+WLmzJnG+3PmzBH18eNAXFycACAWLlxosnzbtm0CgJg8efJdt83Jyanp8oioHuDQPiKyan369MF//vMf3LhxAz/88INxeXnndezatQs9e/aEs7Mz7O3t0axZM7z55psASs5r6tSpEwBg/PjxxuE+q1evBlByHlTLli0RGRmJXr16wdbW1rjtnedIldLr9XjzzTfh7e0NOzs7PPbYY7h586ZJm6CgIIwbN67Mtv/e5/1qK+8cqdzcXMycORP+/v5QqVRo1qwZPvnkEwghTNpJJBJMmzYNW7duRcuWLaFSqRAeHo4dO3aU3+F3SE1NxcSJE+Hl5QUbGxu0adMGa9asMa4vHRIXFxeH33//vcLDzsrj7e0NAGYfvVixYgUSEhKwaNGiMkeBAMDLywtvv/22ybLz58/j5s2bGDRokNl1AkBsbCwAoEePHmXWyWQyuLm5VWg/d3t9V8WxY8fw+++/Y+LEiRg2bFiZ9SqVCp988sk991FcXIz33nsPISEhUKlUCAoKwptvvomCggKTdidPnkRERATc3d2hVqsRHByMCRMmmLS58xyp0vfu1atXMW7cODg7O8PJyQnjx4+HTqcz2TYvLw8vvfQS3N3d4eDggMceewwJCQlVOu+qT58+AIC4uDgA/xt6uX//fkyZMgWenp7w8/MzWXfn63n79u3o3bs3HBwc4OjoiE6dOmHdunUmbY4dO4b+/fvDyckJtra26N27Nw4dOmTSJjs7G9OnT0dQUBBUKhU8PT3xyCOP4NSpU5V6bkRUuzi0j4is3tNPP40333wTf/75JyZNmlRum4sXL+LRRx9F69atMW/ePKhUKly9etX4waV58+aYN28e3nnnHUyePBkPPPAAAKB79+7GfaSlpWHAgAEYMWIExowZAy8vr3vW9cEHH0AikeD1119HamoqFi9ejL59++LMmTNQq9UVfn4Vqe3fhBB47LHHsHfvXkycOBFt27bFzp07MWvWLCQkJJQZAvb3339j8+bNmDJlChwcHPDFF19g2LBhiI+Pv+cH/ry8PDz44IO4evUqpk2bhuDgYGzatAnjxo1DZmYmXn75ZTRv3hzff/89XnnlFfj5+RmH691r2BkAFBUVQaPRACgZ2nf69GksWrQIvXr1QnBwcIX7DgC2bdsGtVqNJ598ssLb/PHHH/D09ETHjh3NeqxSgYGBAIAff/wRPXr0qNLQtYq8vs2xbds2434r69lnn8WaNWvw5JNPYubMmTh27Bjmz5+PqKgobNmyBUBJyO7Xrx88PDzwxhtvwNnZGdevX8fmzZsr9BhPPfUUgoODMX/+fJw6dQrffPMNPD09sWDBAmObcePGYePGjXj66afRtWtX7N+/v9Lht1RpCL7ztT9lyhR4eHjgnXfeQW5u7l23X716NSZMmIDw8HDMnj0bzs7OOH36NHbs2IFRo0YBKBnqOmDAAHTo0AFz5syBVCrFqlWr0KdPHxw8eBCdO3cGADz//PP4+eefMW3aNLRo0QJpaWn4+++/ERUVhfbt21fpeRJRLbD0ITEionsNfSrl5OQk2rVrZ7x/53Ckzz77TAAQt2/fvus+7jV8rnfv3gKAWL58ebnrevfubbxfOgysUaNGQqvVGpdv3LhRABCff/65cVlgYKAYO3bsffd5r9rGjh1rMrRr69atAoB4//33Tdo9+eSTQiKRiKtXrxqXARBKpdJk2dmzZwUAsWTJkjKP9W+LFy8WAMQPP/xgXFZYWCi6desm7O3tTZ773YbrlScwMFAAKHPr0aOHyZC4O91tiJuLi4to06ZNhR671AMPPGDyczF3aJ/BYDC+Zry8vMTIkSPF0qVLxY0bN8psW5nX97+ZO7TviSeeEABERkZGhdrf+V46c+aMACCeffZZk3alQy/37NkjhBBiy5Yt931eQpS8BkuHUP778SZMmFCmbjc3N+P9yMhIAUBMnz7dpN24cePK7LM8pUP75s6dK27fvi2Sk5PFvn37RLt27QQA8csvvwgh/vfz6dmzpyguLjbZR+m6uLg4IYQQmZmZwsHBQXTp0kXk5eWZtDUYDMavoaGhIiIiwrhMCCF0Op0IDg4WjzzyiHGZk5OTmDp16j2fBxFZLw7tI6I6wd7e/p6z9zk7OwMAfv3110pPzKBSqTB+/PgKt3/mmWfg4OBgvP/kk0/Cx8cHf/zxR6Uev6L++OMPyGQyvPTSSybLZ86cCSEEtm/fbrK8b9++CAkJMd5v3bo1HB0dce3atfs+jre3N0aOHGlcplAo8NJLLyEnJwf79++v9HPo0qULdu3ahV27duG3337DBx98gIsXL+Kxxx5DXl6eWfvSarUmP4f7yczMxJEjR6p0ZEMikWDnzp14//334eLigvXr12Pq1KkIDAzE8OHDy50l8F7u9/o2h1arBQCz+uTfSl+/M2bMMFleerTx999/B/C/99xvv/2GoqIisx/n+eefN7n/wAMPIC0tzVh/6fDTKVOmmLR78cUXzXqcOXPmwMPDA97e3njwwQcRGxuLBQsWYOjQoSbtJk2aBJlMds997dq1C9nZ2XjjjTdgY2Njsq50qPGZM2cQExODUaNGIS0tDRqNBhqNBrm5uXj44Ydx4MAB4+8oZ2dnHDt2DImJiWY9JyKyDgxSRFQn5OTk3POD4fDhw9GjRw88++yz8PLywogRI7Bx40azQlWjRo2gVCor3D40NNTkvkQiQZMmTWr8mjM3btyAr69vmf5o3ry5cf2/BQQElNmHi4sLMjIy7vs4oaGhkEpN/1Tc7XHM4e7ujr59+6Jv374YNGgQ3nzzTXzzzTc4fPgwvvnmG7P25ejoaFYI2blzJwCgX79+Zj3OnVQqFd566y1ERUUhMTER69evR9euXbFx40ZMmzbNrH3d7/VtDkdHRwCodDC7ceMGpFIpmjRpYrLc29sbzs7Oxp977969MWzYMMydOxfu7u4YMmQIVq1aVeY8qru583Xp4uICAMbXZWkddw71vLOu+5k8eTJ27dqF3bt3IzIyEqmpqXjttdfKtKvIkNLSYYEtW7a8a5uYmBgAwNixY+Hh4WFy++abb1BQUICsrCwAwMcff4wLFy7A398fnTt3xrvvvnvff3AQkfVgkCIiq3fr1i1kZWXd8wOUWq3GgQMH8Ndff+Hpp5/GuXPnMHz4cDzyyCPQ6/UVehxzzmuqqLtd6LSiNVWHu/2XXdwxMYWlPfzwwwCAAwcOmLVdWFgYrly5UuHpvP/44w/06NEDTk5OxmWlRxfudjRMp9OVOQLxbz4+PhgxYgQOHDiA0NBQbNy4EcXFxRWqpyKvb3OUTrhx/vz5Ku3nfhfpLb3u1pEjRzBt2jQkJCRgwoQJ6NChA3Jycu67/9p6XYaGhqJv377o06cP2rdvf9epzKvr/V/6z5uFCxcaj7reebO3twdQcp7YtWvXsGTJEvj6+mLhwoUIDw8vc1SZiKwTgxQRWb3S6+pERETcs51UKsXDDz+MRYsW4dKlS/jggw+wZ88e7N27F8D9Pxiaq/Q/z6WEELh69arJDHsuLi7lDvO682iOObUFBgYiMTGxzBGH0mshlU6EUFWBgYGIiYkpc1Svuh+nVGnwqMiH8H8bPHgw8vLy8Msvv9y3rRACO3bsKDOsr/S5REdHl7tddHR0hZ6vQqFA69atTSbTuJ+Kvr4ravDgwQBQ6VkAAwMDYTAYyry+U1JSkJmZWaYfunbtig8++AAnT57Ejz/+iIsXL2LDhg2VK76cOkpn1yt19erVKu+7skqHyF64cOG+bRwdHY1HXe+8KRQKY3sfHx9MmTIFW7duRVxcHNzc3PDBBx/U7BMhomrBIEVEVm3Pnj147733EBwcjNGjR9+1XXp6epllpRfbLB1qZGdnBwBmn79yN2vXrjUJMz///DOSkpIwYMAA47KQkBAcPXrU5GjJb7/9VmaadHNqK7246Jdffmmy/LPPPoNEIjF5/KoYOHAgkpOT8dNPPxmXFRcXY8mSJbC3t0fv3r2r5XFK/fe//wUAtGnTxqztnn/+efj4+GDmzJm4cuVKmfWpqal4//33AQAnTpxAampqmSDl4+ODtm3b4ocffijzM4iMjMTRo0dN+jUmJgbx8fFlHqv0/CsXF5f7zlwIVPz1bY5u3bqhf//++Oabb7B169Yy6wsLC/Hqq6/edfuBAwcCABYvXmyyfNGiRQBg7LuMjIwyR4/ufM9VRWmwXLZsmcnyJUuWVHnfldWvXz84ODhg/vz5yM/PN1lX2hcdOnRASEgIPvnkk3L/KXD79m0AJUelS4f4lfL09ISvr2+19B8R1TxOf05EVmP79u24fPkyiouLkZKSgj179mDXrl0IDAzEtm3b7jm0at68eThw4AAGDRqEwMBApKamYtmyZfDz80PPnj0BlIQaZ2dnLF++HA4ODrCzs0OXLl3Mnm67lKurK3r27Inx48cjJSUFixcvRpMmTUymsH722Wfx888/o3///njqqacQGxuLH374wWTyB3NrGzx4MB566CG89dZbuH79Otq0aYM///wTv/76K6ZPn15m35U1efJkrFixAuPGjUNkZCSCgoLw888/49ChQ1i8eHGVzulJSEgwHjEpLCzE2bNnsWLFCri7u5s9mYCLiwu2bNmCgQMHom3bthgzZgw6dOgAADh16hTWr1+Pbt26ASiZKCEoKAgtWrQos59FixYhIiICbdu2xbhx4+Dr64uoqCh8/fXX8PHxwezZs41tz549i1GjRmHAgAF44IEH4OrqioSEBKxZswaJiYlYvHhxmaFrVXl9m2vt2rXo168fhg4disGDB+Phhx+GnZ0dYmJisGHDBiQlJd31WlJt2rTB2LFj8fXXXyMzMxO9e/fG8ePHsWbNGjz++ON46KGHAABr1qzBsmXL8MQTTyAkJATZ2dlYuXIlHB0djWGsKjp06IBhw4Zh8eLFSEtLM05/XhqWq/sIc0U4Ojris88+w7PPPotOnTph1KhRcHFxwdmzZ6HT6bBmzRpIpVJ88803GDBgAMLDwzF+/Hg0atQICQkJ2Lt3LxwdHfHf//4X2dnZ8PPzw5NPPok2bdrA3t4ef/31F06cOIFPP/201p8bEVWCBWcMJCISQvxviuHSm1KpFN7e3uKRRx4Rn3/+uck026XunLJ59+7dYsiQIcLX11colUrh6+srRo4cKa5cuWKy3a+//ipatGgh5HK5yXTjvXv3FuHh4eXWd7fpz9evXy9mz54tPD09hVqtFoMGDSp3+utPP/1UNGrUSKhUKtGjRw9x8uTJMvu8V213Tn8uhBDZ2dnilVdeEb6+vkKhUIjQ0FCxcOFCk+mWhSiZerq86ZXvNi37nVJSUsT48eOFu7u7UCqVolWrVuVO0V6V6c+lUqnw9PQUI0eONJmm/U73mwY8MTFRvPLKK6Jp06bCxsZG2Nraig4dOogPPvhAZGVlCSGE6Nixo5gyZcpd93H06FHx6KOPChcXFyGXy0WjRo3Es88+K27dumXSLiUlRXz00Ueid+/ewsfHR8jlcuHi4iL69Okjfv75Z5O2lXl9m/O870an04lPPvlEdOrUSdjb2wulUilCQ0PFiy++aNLPd76XhBCiqKhIzJ07VwQHBwuFQiH8/f3F7NmzRX5+vrHNqVOnxMiRI0VAQIBQqVTC09NTPProo+LkyZMm+8Jdpj+/81IFd041LoQQubm5YurUqcLV1VXY29uLxx9/XERHRwsA4qOPPrrn8y+d/nzhwoX3bHev6enLq0kIIbZt2ya6d+8u1Gq1cHR0FJ07dxbr1683aXP69GkxdOhQ4ebmJlQqlQgMDBRPPfWU2L17txBCiIKCAjFr1izRpk0b4eDgIOzs7ESbNm3EsmXL7lkvEVkPiRBWdrYxERFRDUhJSYGPjw9+++23ajliQpZx5swZtGvXDj/88EO1DYckIqoMniNFREQNQlZWFt555x3j0DSyfuXNorh48WJIpVL06tXLAhUREf0Pj0gRERGRVZo7dy4iIyPx0EMPQS6XY/v27di+fbvx/D0iIktikCIiIiKrtGvXLsydOxeXLl1CTk4OAgIC8PTTT+Ott96CXM75sojIshikiIiIiIiIzMRzpIiIiIiIiMzEIEVERERERGQmDjAGYDAYkJiYCAcHB4tc4I+IiIiIiKyDEALZ2dnw9fWFVHr3404MUgASExPh7+9v6TKIiIiIiMhK3Lx5E35+fnddzyAFwMHBAUBJZzk6Olq4GiIiIiIishStVgt/f39jRrgbBinAOJzP0dGRQYqIiIiIiO57yg8nmyAiIiIiIjITgxQREREREZGZGKSIiIiIiIjMxCBFRERERERkJgYpIiIiIiIiMzFIERERERERmYlBioiIiIiIyEwMUkRERERERGZikCIiIiIiIjITgxQREREREZGZGKSIiIiIiIjMxCBFRERERERkJgYpIiIiIiIiMzFIERERERERmUlu6QKIiIiIiKoqPj4eGo3G7O3c3d0REBBQAxVRfccgRURERER1Wnx8PMKaN0eeTmf2tmpbW1yOimKYIrMxSBERERFRnabRaJCn02H06wvhFRBS4e1S4mPx44JZ0Gg0DFJkNgYpIiIiIqoXvAJC4BcabukyqIHgZBNERERERERmYpAiIiIiIiIyE4MUERERERGRmRikiIiIiIiIzMQgRUREREREZCYGKSIiIiIiIjMxSBEREREREZmJQYqIiIiIiMhMDFJERERERERmYpAiIiIiIiIyE4MUERERERGRmRikiIiIiIiIzMQgRUREREREZCYGKSIiIiIiIjMxSBEREREREZmJQYqIiIiIiMhMDFJERERERERmYpAiIiIiIiIyE4MUERERERGRmRikiIiIiIiIzMQgRUREREREZCYGKSIiIiIiIjMxSBEREREREZmJQYqIiIiIiMhMDFJERERERERmYpAiIiIiIiIyE4MUERERERGRmRikiIiIiIiIzMQgRUREREREZCYGKSIiIiIiIjMxSBEREREREZmJQYqIiIiIiMhMDFJERERERERmYpAiIiIiIiIyE4MUERERERGRmSwapA4cOIDBgwfD19cXEokEW7duNVkvhMA777wDHx8fqNVq9O3bFzExMSZt0tPTMXr0aDg6OsLZ2RkTJ05ETk5OLT4LIiIiIiJqaCwapHJzc9GmTRssXbq03PUff/wxvvjiCyxfvhzHjh2DnZ0dIiIikJ+fb2wzevRoXLx4Ebt27cJvv/2GAwcOYPLkybX1FIiIiIiIqAGSW/LBBwwYgAEDBpS7TgiBxYsX4+2338aQIUMAAGvXroWXlxe2bt2KESNGICoqCjt27MCJEyfQsWNHAMCSJUswcOBAfPLJJ/D19a2150JERERERA2H1Z4jFRcXh+TkZPTt29e4zMnJCV26dMGRI0cAAEeOHIGzs7MxRAFA3759IZVKcezYsbvuu6CgAFqt1uRGRERERERUUVYbpJKTkwEAXl5eJsu9vLyM65KTk+Hp6WmyXi6Xw9XV1dimPPPnz4eTk5Px5u/vX83VExERERFRfWa1QaomzZ49G1lZWcbbzZs3LV0SERERERHVIVYbpLy9vQEAKSkpJstTUlKM67y9vZGammqyvri4GOnp6cY25VGpVHB0dDS5ERERERERVZTVBqng4GB4e3tj9+7dxmVarRbHjh1Dt27dAADdunVDZmYmIiMjjW327NkDg8GALl261HrNRERERETUMFh01r6cnBxcvXrVeD8uLg5nzpyBq6srAgICMH36dLz//vsIDQ1FcHAw/vOf/8DX1xePP/44AKB58+bo378/Jk2ahOXLl6OoqAjTpk3DiBEjOGMfERERERHVGIsGqZMnT+Khhx4y3p8xYwYAYOzYsVi9ejVee+015ObmYvLkycjMzETPnj2xY8cO2NjYGLf58ccfMW3aNDz88MOQSqUYNmwYvvjii1p/LkRERERE1HBYNEg9+OCDEELcdb1EIsG8efMwb968u7ZxdXXFunXraqI8IiIiIiKiclntOVJERERERETWikGKiIiIiIjITBYd2kfWIT4+HhqNxuzt3N3dERAQUAMVERERERFZNwapBi4+Ph5hzZsjT6cze1u1rS0uR0UxTBERERFRg8Mg1cBpNBrk6XQY/fpCeAWEVHi7lPhY/LhgFjQaDYMUERERETU4DFIEAPAKCIFfaLilyyAiIiIiqhM42QQREREREZGZGKSIiIiIiIjMxCBFRERERERkJgYpIiIiIiIiMzFIERERERERmYlBioiIiIiIyEyc/pyIiIiIrEZ8fDw0Go1Z20RFRdVQNUR3xyBFRERERFYhPj4eYc2bI0+nq9T2OTk51VwR0d0xSBERERGRVdBoNMjT6TD69YXwCgip8HZRx/dj+5rPkZ+fX4PVEZlikCIiIiIiq+IVEAK/0PAKt0+Jj63BaojKx8kmiIiIiIiIzMQgRUREREREZCYGKSIiIiIiIjMxSBEREREREZmJQYqIiIiIiMhMDFJERERERERmYpAiIiIiIiIyE4MUERERERGRmRikiIiIiIiIzMQgRUREREREZCYGKSIiIiIiIjMxSBEREREREZmJQYqIiIiIiMhMDFJERERERERmYpAiIiIiIiIyE4MUERERERGRmRikiIiIiIiIzMQgRUREREREZCYGKSIiIiIiIjMxSBEREREREZmJQYqIiIiIiMhMDFJERERERERmYpAiIiIiIiIyE4MUERERERGRmRikiIiIiIiIzMQgRUREREREZCYGKSIiIiIiIjMxSBEREREREZmJQYqIiIiIiMhMDFJERERERERmYpAiIiIiIiIyE4MUERERERGRmRikiIiIiIiIzMQgRUREREREZCYGKSIiIiIiIjMxSBEREREREZmJQYqIiIiIiMhMDFJERERERERmsuogpdfr8Z///AfBwcFQq9UICQnBe++9ByGEsY0QAu+88w58fHygVqvRt29fxMTEWLBqIiIiIiKq76w6SC1YsABfffUVvvzyS0RFRWHBggX4+OOPsWTJEmObjz/+GF988QWWL1+OY8eOwc7ODhEREcjPz7dg5UREREREVJ/JLV3AvRw+fBhDhgzBoEGDAABBQUFYv349jh8/DqDkaNTixYvx9ttvY8iQIQCAtWvXwsvLC1u3bsWIESMsVjsREREREdVfVn1Eqnv37ti9ezeuXLkCADh79iz+/vtvDBgwAAAQFxeH5ORk9O3b17iNk5MTunTpgiNHjtx1vwUFBdBqtSY3IiIiIiKiirLqI1JvvPEGtFotwsLCIJPJoNfr8cEHH2D06NEAgOTkZACAl5eXyXZeXl7GdeWZP38+5s6dW3OFExERERFRvWbVR6Q2btyIH3/8EevWrcOpU6ewZs0afPLJJ1izZk2V9jt79mxkZWUZbzdv3qymiomIiIiIqCGw6iNSs2bNwhtvvGE816lVq1a4ceMG5s+fj7Fjx8Lb2xsAkJKSAh8fH+N2KSkpaNu27V33q1KpoFKparR2IiIiIiKqv6z6iJROp4NUalqiTCaDwWAAAAQHB8Pb2xu7d+82rtdqtTh27Bi6detWq7USEREREVHDYdVHpAYPHowPPvgAAQEBCA8Px+nTp7Fo0SJMmDABACCRSDB9+nS8//77CA0NRXBwMP7zn//A19cXjz/+uGWLJyIiIiKiesuqg9SSJUvwn//8B1OmTEFqaip8fX3x3HPP4Z133jG2ee2115Cbm4vJkycjMzMTPXv2xI4dO2BjY2PByomIiIiIqD6z6iDl4OCAxYsXY/HixXdtI5FIMG/ePMybN6/2CiMiIiIiogbNqs+RIiIiIiIiskYMUkRERERERGZikCIiIiIiIjITgxQREREREZGZGKSIiIiIiIjMxCBFRERERERkJgYpIiIiIiIiMzFIERERERERmYlBioiIiIiIyEwMUkRERERERGZikCIiIiIiIjITgxQREREREZGZGKSIiIiIiIjMxCBFRERERERkJgYpIiIiIiIiMzFIERERERERmYlBioiIiIiIyEwMUkRERERERGZikCIiIiIiIjITgxQREREREZGZGKSIiIiIiIjMxCBFRERERERkJgYpIiIiIiIiMzFIERERERERmYlBioiIiIiIyEwMUkRERERERGZikCIiIiIiIjITgxQREREREZGZKhWkrl27Vt11EBERERER1RmVClJNmjTBQw89hB9++AH5+fnVXRMREREREZFVq1SQOnXqFFq3bo0ZM2bA29sbzz33HI4fP17dtREREREREVmlSgWptm3b4vPPP0diYiK+++47JCUloWfPnmjZsiUWLVqE27dvV3edREREREREVqNKk03I5XIMHToUmzZtwoIFC3D16lW8+uqr8Pf3xzPPPIOkpKTqqpOIiIiIiMhqVClInTx5ElOmTIGPjw8WLVqEV199FbGxsdi1axcSExMxZMiQ6qqTiIiIiIjIasgrs9GiRYuwatUqREdHY+DAgVi7di0GDhwIqbQklwUHB2P16tUICgqqzlqJiIiIiIisQqWC1FdffYUJEyZg3Lhx8PHxKbeNp6cnvv322yoVR0REREREZI0qFaRiYmLu20apVGLs2LGV2T0REREREZFVq9Q5UqtWrcKmTZvKLN+0aRPWrFlT5aKIiIiIiIisWaWC1Pz58+Hu7l5muaenJz788MMqF0VERERERGTNKhWk4uPjERwcXGZ5YGAg4uPjq1wUERERERGRNatUkPL09MS5c+fKLD979izc3NyqXBQREREREZE1q1SQGjlyJF566SXs3bsXer0eer0ee/bswcsvv4wRI0ZUd41ERERERERWpVKz9r333nu4fv06Hn74YcjlJbswGAx45plneI4UERERERHVe5UKUkqlEj/99BPee+89nD17Fmq1Gq1atUJgYGB110dERERERGR1KhWkSjVt2hRNmzatrlqIiIiIiIjqhEoFKb1ej9WrV2P37t1ITU2FwWAwWb9nz55qKY6IiIiIiMgaVSpIvfzyy1i9ejUGDRqEli1bQiKRVHddREREREREVqtSQWrDhg3YuHEjBg4cWN31EBERERERWb1KTX+uVCrRpEmT6q6FiIiIiIioTqhUkJo5cyY+//xzCCGqux4iIiIiIiKrV6mhfX///Tf27t2L7du3Izw8HAqFwmT95s2bq6U4IiIiIiIia1SpIOXs7IwnnniiumshIiIiIqp1UVFRZm/j7u6OgICAGqiG6opKBalVq1ZVdx1ERERERLVKm34bADBmzBizt1Xb2uJyVBTDVANW6QvyFhcXY9++fYiNjcWoUaPg4OCAxMREODo6wt7evjprJCIiIiKqdnk5WgDAoOfeQrPWHSq8XUp8LH5cMAsajYZBqgGrVJC6ceMG+vfvj/j4eBQUFOCRRx6Bg4MDFixYgIKCAixfvrzaCkxISMDrr7+O7du3Q6fToUmTJli1ahU6duwIABBCYM6cOVi5ciUyMzPRo0cPfPXVVwgNDa22GoiIiIio/nLzDYRfaLily6A6plKz9r388svo2LEjMjIyoFarjcufeOIJ7N69u9qKy8jIQI8ePaBQKLB9+3ZcunQJn376KVxcXIxtPv74Y3zxxRdYvnw5jh07Bjs7O0RERCA/P7/a6iAiIiIiIvq3Sh2R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ERERERFZGbOC1NixY03ujxkzplqLISIiIiIiqgvMClKrVq2qqTqIiIiIiIjqjCpNNkFERERERNQQMUgRERERERGZiUGKiIiIiIjITAxSREREREREZmKQIiIiIiIiMhODFBERERERkZkYpIiIiIiIiMzEIEVERERERGQmBikiIiIiIiIzMUgRERERERGZSW7pAoiIiMg88fHx0Gg0ldrW3d0dAQEB1VwRUcMUFRVl9jZ8D9YfDFJERER1SHx8PMKaN0eeTlep7dW2trgcFcUPckRVoE2/DQAYM2aM2dvyPVh/MEgRERHVIRqNBnk6HUa/vhBeASFmbZsSH4sfF8yCRqPhhziiKsjL0QIABj33Fpq17lDh7fgerF8YpIiIiOogr4AQ+IWGW7oMogbNzTeQ78MGjJNNEBERERERmYlBioiIiIiIyEwMUkRERERERGZikCIiIiIiIjITgxQREREREZGZOGsfEREREdVpAoDUxh45BjniNLko1htgEIBBCEgAqBQyqBUy2CiksLeRQy7lsQSqujoVpD766CPMnj0bL7/8MhYvXgwAyM/Px8yZM7FhwwYUFBQgIiICy5Ytg5eXl2WLJSIiIqJqJ4SAJqcQKdp8pGjzkZpdAA2awf/lDYjMByLPJt5ze4kEcFYr4GanQiHcofILh0HUUvFUr9SZIHXixAmsWLECrVu3Nln+yiuv4Pfff8emTZvg5OSEadOmYejQoTh06JCFKiUiIiKi6lRQrEd8mg5xabm4rtEhr0h/R4uSI0wK6OHsYAuFTAKpRAKZRAKDEMgvNiC/SI+8Qj2KDQIZuiJk6IoAeMB79AIcyjMg/nQCgt3tEOplD1tlnfmITBZUJ14lOTk5GD16NFauXIn333/fuDwrKwvffvst1q1bhz59+gAAVq1ahebNm+Po0aPo2rWrpUomIiIioiowCIGb6TpcStIi9nYu9P86bKSQSeDtZAMvBxt4OqqQcv5vbP5kFp55Zynadu59130KIZBboEdabgHScgsRFROLlFwDYOeCG+k63EjXYX/MbQS42iLM2wFNPO05DJDuqk4EqalTp2LQoEHo27evSZCKjIxEUVER+vbta1wWFhaGgIAAHDly5K5BqqCgAAUFBcb7Wq225oonIiIiogqTquwQX2SPyEPXkVNQbFzubKtAY3c7BLnZwddZDZlUYlynRRGgL7rv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e/asyTaHDh2CVCpFs2bNjMvatWuH2bNn4/Dhw2jZsiXWrVsHAGjfvj2io6PRpEmTMjep9O5/EpVKJZo0aYKgoKAyIaoiWrVqBYPBgP3795e7vn379rh48SKCgoLK1HW/kEZERJbBIEVERBaxdOlS6PV6dO7cGb/88gtiYmIQFRWFL774At26dSt3m9GjR8PGxgZjx47FhQsXsHfvXrz44ot4+umn4eXlhbi4OMyePRtHjhzBjRs38OeffyImJsZ4ntQ777yDtWvXYu7cubh48SKioqKwYcMGvP322zX6XIOCgjB27FhMmDABW7duRVxcHPbt24eNGzcCAKZOnYr09HSMHDkSJ06cQGxsLHbu3Inx48dDr9fXaG1ERFQ5DFJERGQRjRs3xqlTp/DQQw9h5syZaNmyJR555BHs3r0bX331Vbnb2NraYufOnUhPT0enTp3w5JNP4uGHHzaer2Rra4vLly8bp1OfPHkypk6diueeew4AEBERgd9++w1//vknOnXqhK5du+Kzzz5DYGBgjT/fr776Ck8++SSmTJmCsLAwTJo0yXhkzdfXF4cOHYJer0e/fv3QqlUrTJ8+Hc7Ozvc8UkZERJYjEZU945eIiIiIiKiB4r+5iIiIiIiIzMQgRUREREREZCYGKSIiIiIiIjMxSBEREREREZmJQYqIiIiIiMhMDFJERERERERmYpAiIiIiIiIyE4MUERERERGRmRikiIiIiIiIzMQgRUREREREZCYGKSIiIiIiIjP9PxAu7py6XuIeAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 5))\n", + "sns.histplot(df['close'], bins=50, kde=True)\n", + "plt.title('Distribution of BTC/USDT Closing Prices')\n", + "plt.xlabel('Close Price')\n", + "plt.ylabel('Frequency')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Boxplot of Prices to Detect Outliers" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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767ffvtNGzdu/ENjXc3BgwclSTVq1DCXFRQUKCoqSj4+Pnr99dfVtWvXy27fp08fDRkyRLVr19arr76qkSNHymaz2QX/SZMm6dlnn9Xdd9+tadOmaciQIUpNTVXbtm115swZSVJeXp6ioqK0ZcsWDRo0SLNmzVL//v31448/mjUAcEMYAIBKZf78+YakEg8XFxcjMTHRrnbZsmWGJGPixIl2yx9//HHDwcHBOHDggLls1KhRhqOjo7Fhwwbj448/NiQZb7zxht12MTExhiRj0KBB5rKioiIjOjracHZ2Nk6ePGkul2SMGzfOfN65c2fD2dnZOHjwoLns2LFjhru7u9G2bVtzWfFrf/HFF9f0foSGhho+Pj7Gr7/+ai777rvvDEdHR+PZZ581l33xxReGJOPjjz++6pjFtZc+HB0djUmTJl12u5MnT5bYb8MwjOXLlxuSjOnTp1/TPhmGYfz4448l3oeYmBjDzc3tstu4ubkZMTEx5vOdO3carq6uhiQjNDTUeP75541ly5YZOTk5JbZ9+OGHjcaNG1927KVLlxqSjBkzZpRYd7n9vpLiz/GaNWuMkydPGkePHjU+/PBDo0aNGoarq6vx888/m/ssyRg5cmSJMWJiYozAwEDz+dq1aw1JxuDBg0vUFhUVGYZhGD/99JPh5ORU4u9xx44dRpUqVczl27dvv+bPCwBcT5whA4BKatasWUpJSVFKSooWLlyodu3aqW/fvnaz9a1cuVJOTk7mWadi//jHP2QYht2sjAkJCWrcuLFiYmL097//XQ8//HCJ7YrFxcWZf3ZwcFBcXJzy8vK0Zs2aUusLCwu1evVqde7cWXfddZe5vFatWnr66ae1ceNGZWdnl/k9OH78uNLT09WrVy95e3uby5s0aaI///nPWrlyZZnHvNjYsWPN93jJkiXq3r27XnjhBc2YMaNM4xTvW1nOjiUlJcnT01OtW7cu02tdrHHjxkpPT1fPnj31008/acaMGercubN8fX01d+7cMo1VPLvj2bNny91PaSIiIlSzZk3Vrl1bTz31lKpXr66lS5fqzjvvtKsbOHDgVcf697//LQcHh1LP1jo4OEiSPv30UxUVFemJJ54wz37+8ssv8vPz0913360vvvhC0u/300nSqlWr9Ntvv/3R3QSAcmNSDwCopB544AG7ST26d++u++67T3FxcfrLX/4iZ2dnHT58WP7+/iWCQPElgIcPHzaXOTs7a968eWrRooVsNpvmz59vHsRezNHR0S5USdI999wjSZedqv7kyZP67bff1KBBgxLrGjVqpKKiIh09elSNGze+tp3//xX3f7lxV61aZU4AUR4hISGKiIgwnz/xxBPKysrSyJEj9fTTT6tmzZrXNI6Hh4eksoWZpKQkRUZGlvl+tUv/zu655x598MEHKiws1O7du7VixQpNmTJF/fv3V1BQkN3+Xcm5c+cklS1UXotZs2bpnnvuUZUqVeTr66sGDRrI0dH+98FVqlRRQEDAVcc6ePCg/P397cL5pfbv3y/DMHT33XeXur74/r6goCDFx8dr2rRpWrRokdq0aaO//vWv6tmzpxnWAOBG4AwZANwkHB0d1a5dOx0/flz79+8v1xirVq2SJF24cKHcY9zqHn30UV24cEFbt2695m0aNmwoSdqxY8c11f/2229at25difvHbDabcnNzS51AxTAMXbhwQTabrdQxnZycFBISolGjRmnp0qWSZPedalezc+dOSbKb7r4iPPDAA4qIiFB4eLgaNWpUIoxJkouLS6nLy6OoqEgODg5KTk42z35e/PjnP/9p1k6dOlXff/+9Ro8erfPnz2vw4MFq3Lixfv755wrpBQCuBYEMAG4iBQUFkv53NiMwMFDHjh0rcWZm79695vpi33//vcaPH6/nnntO9913n/r27VvqbHJFRUX68ccf7Zb98MMPknTZ2QBr1qypatWqad++fSXW7d27V46Ojqpdu7akkmd4rqS4/8uN+6c//ancZ8cu59L3+Frcc889atCggZYvX35N261du1a5ubnq0KGD3fLAwEAVFBSYE19c7MCBAyosLLzsl11frPjM6vHjx6+p/8LCQi1evFjVqlX7Q5dQXm/16tXTsWPHdOrUqSvWGIZhnh289NGyZUu7+pCQEI0ZM0YbNmzQl19+qf/+97+aM2fO9d4VADARyADgJpGfn6/Vq1fL2dnZvCSxY8eOKiws1MyZM+1qp0+fLgcHB/OAPz8/X7169ZK/v79mzJihxMREZWZmaujQoaW+1sXjGYahmTNnqmrVqnr00UdLrXdyclJkZKSWL19ud1ljZmamFi9erNatW5uX9RUHqGuZya5WrVoKDQ3VggUL7Op37typ1atX/6EZCi9nxYoVkqSmTZuWabuXXnpJv/76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Yzk5OSklJUWbNm3S6tWr9dZbb+mFF17Q119/bV6yO3fuXLtfcBRvhxuDM2SoVOrVqydnZ2d99dVX5rL8/Hx98803Cg4ONpdt2bLF/PPp06f1ww8/qFGjRpKk+++/X7t371b9+vVLPJydnW/czgA3UIMGDbRjxw7l5uaay4onwwFuNY0aNVJBQYG+/vprc9mvv/6qffv2mf9WODg4qE2bNlq+fLl27dql1q1bq0mTJsrNzdU///lPNW/eXG5ublbtAnBFd999t1xdXZWamnrV2kaNGpn3URb76quv5O7uroCAAEm//zy0atVKL730krZv3y5nZ2ctXbpUvr6+8vf3148//ljimCkoKOi67R/sEchQqbi5uWngwIEaNmyYkpOTtXv3bvXr10+//fab+vTpY9aNHz9eqamp2rlzp3r16qU//elP6ty5syRpxIgR2rRpk+Li4pSenq79+/dr+fLlJSb1AG4lTz/9tIqKitS/f3/t2bNHq1at0uuvvy5JdpexALeCu+++W4899pj69eunjRs36rvvvlPPnj1155136rHHHjPrwsPD9a9//UuhoaGqXr26HB0d1bZtWy1atEgPP/ywhXsAXJnNZtOIESM0fPhwvf/++zp48KC2bNmi9957r0Tt3//+dx09elSDBg3S3r17tXz5co0bN07x8fFydHTU119/rZdfflnbtm3TkSNH9Omnn+rkyZPmL7JfeuklTZ48WW+++aZ++OEH7dixQ/Pnz9e0adNu9G7ftrhkEZXOK6+8oqKiIj3zzDM6e/asmjdvrlWrVtl9Ae4rr7yi559/Xvv371doaKg+//xz8+xXkyZNtH79er3wwgtq06aNDMNQvXr19OSTT1q1S8B15+Hhoc8//1wDBw5UaGioQkJCNHbsWD399NN295UBt4r58+fr+eef11/+8hfl5eWpbdu2Wrlypd0luQ8//LAKCwvt7hULDw/X8uXLuX8Mld6LL76oKlWqaOzYsTp27Jhq1aqlAQMGlKi78847tXLlSg0bNkxNmzaVt7e3+vTpozFjxkj6/d+HDRs26I033lB2drYCAwM1depUdejQQZLUt29fVatWTa+99pqGDRsmNzc3hYSEaMiQITdyd29rDsbF5zeBSm7dunVq166dTp8+LS8vL6vbASq1RYsW6bnnnlNWVlaF3o8AAAAqDmfIAOAW8f777+uuu+7SnXfeqe+++04jRozQE088QRgDAKASI5ABwC0iIyNDY8eOVUZGhmrVqqVu3bpp0qRJVrcFAACugEsWAQAAAMAizLIIAAAAABYhkAEAAACARQhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgEQIZAAAAAFiEQAYAAAAAFvn/ABOLK34GxJk4AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 5))\n", + "sns.boxplot(data=df[['open', 'high', 'low', 'close']])\n", + "plt.title('Boxplot of BTC/USDT Prices')\n", + "plt.ylabel('Price')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Correlation Matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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No1Gg8TERERGRj40fnt7e/j7+6OkpAQ//vgjunbtatD5GzUnbubMmZAkCf3790dJyd2H+9ra2mLYsGH49NNPjdklERERkUEs5ckK0dHRGDBgAMLDw9G0aVPEx8cjLy8PUVFRAID+/fvD399fOxy7f/9+XLlyBWFhYbhy5QomTpwIjUaDkSNHGnRco5I4Ozs7zJkzB3FxcTh79iwAIDg4GI6OjsbsjoiIiEi2evXqhczMTIwfPx7p6ekICwvD5s2btTc7XLx4UWe+W0FBAcaOHYtz586hUqVK6NChA1asWAE3NzeDjmv0OnEVjevEERGRvrhOnOUw5zpxl95+xWT7DvjyR5Ptu6JYRh2SiIiIiAxi1HAqERERkblZypw4c7HusyciIiKSKVbiiIiISJ4kydwRmBUrcUREREQyxEocERERyZKksO5KHJM4IiIikiXe2EBEREREssNKHBEREcmStQ+nshJHREREJEOsxBEREZEscU4cEREREckOK3FEREQkS5wTR0RERESyw0ocERERyZK1V+KYxBEREZE88cYGIiIiIpIbVuKIiIhIliTJuodTWYkjIiIikiFW4oiIiEiWuNgvEREREckOK3FEREQkS9a+xAgrcUREREQyxEocERERyRPnxBERERGR3LASR0RERLJk7XPimMQRERGRLEmSdQ8oMokjIiLZcajkaO4QiMyOSRwRERHJk5UPp1p3HZKIiIhIpliJIyIiIlniY7eIiIiISHZYiSMiIiJZsvYlRliJIyIiIpIhVuKIiIhInrhOHBEREZH8cDiViIiIiGSHlTgiIiKSJy4xQkRERERyw0ocERERyZIkcU4cEREREckMK3FEREQkT5wTR0RERERyw0ocERERyZK1rxPHJI6IiIjkycqf2GDdZ09EREQkU6zEERERkTxZ+XAqK3FEREREMsRKHBEREcmSxDlxRERERPQ45s2bh6CgINjb2yMiIgIHDhx4aP/4+HiEhobCwcEBAQEB+PDDD1FQUGDQMVmJIyIiInmykDlxa9asQXR0NObPn4+IiAjEx8ejXbt2SE5OhpeXV6n+q1atwqhRo7BkyRI0a9YMKSkpGDhwICRJwuzZs/U+LitxRERERI9h9uzZGDJkCKKiolC3bl3Mnz8fjo6OWLJkSZn9f//9dzRv3hx9+/ZFUFAQXnzxRfTp0+eR1bsHMYkj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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(8, 6))\n", + "sns.heatmap(df[['open', 'high', 'low', 'close', 'volume']].corr(), annot=True, cmap='coolwarm')\n", + "plt.title('Correlation Matrix')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Moving Average of Closing Prices" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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v78wNDQUnTt31jjn2v311Ttt2rQm69Z2jJuG40ahUIg33nhDuLu7CyMjI9G5c2exdOlSjUc+U+uTCCEEiIiIiIiIiEhrcXUsIiIiIiIiIi3H5J+IiIiIiIhIyzH5JyIiIiIiItJyTP6JiIiIiIiItByTfyIiIiIiIiItx+SfiIiIiIiISMsx+SciIiIiIiLSckz+iYiIiIiIiLQck38iIiJqc9OnT0dwcHB7d4OIiEhn6bd3B4iIiKhjk0gkje5fsWIFNm3aBCHEA+oRERER/RWTfyIiIrovGRkZ6p93796N5cuXIyEhQb3NzMwMZmZm7dE1IiIiuo23/RMREdF9cXR0VL/kcjkkEonGNjMzszq3/Q8bNgyvv/465s+fDysrKzg4OODLL79ESUkJZsyYAXNzc3h5eeHIkSMabcXGxuLJJ5+EmZkZHBwcMHXqVOTk5DzgMyYiIup4mPwTERFRuwgJCYGtrS3OnTuH119/Ha+++iqee+45BAYGIjIyEqNGjcLUqVNRWloKACgoKMDjjz+OgIAARERE4OjRo8jKysLEiRPb+UyIiIgefkz+iYiIqF307t0by5Ytg7e3N5YsWQIjIyPY2tpi1qxZ8Pb2xvLly5Gbm4uYmBgAwGeffYaAgAB88MEH8PX1RUBAALZt24bQ0FAkJia289kQERE93Djnn4iIiNpFr1691D/r6enBxsYGfn5+6m0ODg4AgOzsbADAxYsXERoaWu/6AVevXkXXrl3buMdEREQdF5N/IiIiahcGBgYa7yUSica22qcI1NTUAACKi4sxduxYrF27tk5dTk5ObdhTIiKijo/JPxEREXUIffr0wffff49OnTpBX59/whAREbUE5/wTERFRhzBv3jzk5eVh0qRJOH/+PK5evYpjx45hxowZUCqV7d09IiKihxqTfyIiIuoQnJ2dcfr0aSiVSowaNQp+fn6YP38+LC0tIZXyTxoiIqLGSIQQor07QURERERERERth1+TExEREREREWk5Jv9EREREREREWo7JPxEREREREZGWY/JPREREREREpOWY/BMRERERERFpOSb/RERERERERFqOyT8RERERERGRlmPyT0RERERERKTlmPwTERERERERaTkm/0RERERERERajsk/ERERERERkZb7f7E5edsQoZurAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df['MA50'] = df['close'].rolling(window=50).mean()\n", + "df['MA200'] = df['close'].rolling(window=200).mean()\n", + "\n", + "plt.figure(figsize=(12, 6))\n", + "plt.plot(df['timestamp'], df['close'], label='Close Price')\n", + "plt.plot(df['timestamp'], df['MA50'], label='50-period MA')\n", + "plt.plot(df['timestamp'], df['MA200'], label='200-period MA')\n", + "plt.title('BTC/USDT Close Price and Moving Averages')\n", + "plt.xlabel('Time')\n", + "plt.ylabel('Price')\n", + "plt.legend()\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/requirements.txt b/requirements.txt index 23e5266..2e00c16 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,10 @@ +backtrader==1.9.78.123 +matplotlib==3.9.0 +numpy==2.0.0 +packaging==24.1 +pandas +yfinance +requests flask Flask-SQLAlchemy Flask-JWT-Extended @@ -6,4 +13,7 @@ psycopg2-binary confluent-kafka apache-airflow mlflow -psycopg2 \ No newline at end of file +psycopg2 +python-dotenv +ccxt +yfinance \ No newline at end of file diff --git a/scripts/backtest_runner.py b/scripts/backtest_runner.py index e69de29..2e13043 100644 --- a/scripts/backtest_runner.py +++ b/scripts/backtest_runner.py @@ -0,0 +1,169 @@ +import pandas as pd +from sqlalchemy import create_engine +import backtrader as bt +import os + +# RDS connection information +rds_host = os.getenv('PG_HOST') +rds_port = os.getenv('PG_PORT') +rds_db = os.getenv('PG_DATABASE') +rds_user = os.getenv('PG_USER') +rds_password = os.getenv('PG_PASSWORD') + +engine = create_engine(f'postgresql+psycopg2://{rds_user}:{rds_password}@{rds_host}:{rds_port}/{rds_db}') + +def fetch_data(symbol, start_date, end_date): + query = f""" + SELECT timestamp AS date, open AS open, high AS high, low AS low, close AS close, volume AS volume + FROM public."ohlcv_{symbol.replace('/', '_')}" + WHERE timestamp >= '{start_date}' AND timestamp <= '{end_date}'; + """ + try: + print(f"Executing query:\n{query}\n") # Print the SQL query for debugging purposes + + data = pd.read_sql(query, con=engine) + print(f"Fetched data:\n{data.head()}\n") # Print the first few rows of fetched data for debugging + + # Check if data is empty + if data.empty: + raise ValueError("No data returned from query.") + + # Convert 'date' column to datetime + data['date'] = pd.to_datetime(data['date'], format='%Y-%m-%d') + + # Set 'date' column as index + data.set_index('date', inplace=True) + + # Ensure column names are correctly capitalized for Backtrader + data.rename(columns={'open': 'Open', 'high': 'High', 'low': 'Low', 'close': 'Close', 'volume': 'Volume'}, inplace=True) + + return data + except Exception as e: + print(f"Error fetching data: {e}") + raise + +class RsiBollingerBandsStrategy(bt.Strategy): + params = ( + ('rsi_period', 14), + ('bb_period', 20), + ('bb_dev', 2), + ('oversold', 30), + ('overbought', 70), + ) + + def __init__(self): + self.rsi = bt.indicators.RelativeStrengthIndex(period=self.params.rsi_period) + self.bbands = bt.indicators.BollingerBands(period=self.params.bb_period, devfactor=self.params.bb_dev) + + def next(self): + if not self.position: + if self.rsi < self.params.oversold and self.data.close <= self.bbands.lines.bot: + self.buy() + else: + if self.rsi > self.params.overbought or self.data.close >= self.bbands.lines.top: + self.sell() +class MacdStrategy(bt.Strategy): + params = ( + ('macd1_period', 12), + ('macd2_period', 26), + ('signal_period', 9), + ) + + def __init__(self): + self.macd = bt.indicators.MACDHisto(period_me1=self.params.macd1_period, period_me2=self.params.macd2_period, period_signal=self.params.signal_period) + + def next(self): + if not self.position: + if self.macd.lines.histo[0] > 0 and self.macd.lines.histo[-1] <= 0: + self.buy() + else: + if self.macd.lines.histo[0] < 0 and self.macd.lines.histo[-1] >= 0: + self.sell() + +class StochasticOscillatorStrategy(bt.Strategy): + params = ( + ('stoch_period', 14), + ('stoch_low', 20), + ('stoch_high', 80), + ) + + def __init__(self): + self.stoch = bt.indicators.Stochastic(period=self.params.stoch_period) + + def next(self): + if not self.position: + if self.stoch.lines.percK[0] < self.params.stoch_low and self.stoch.lines.percK[-1] >= self.params.stoch_low: + self.buy() + else: + if self.stoch.lines.percK[0] > self.params.stoch_high and self.stoch.lines.percK[-1] <= self.params.stoch_high: + self.sell() + +def run_backtest(strategy, symbol, start_date, end_date): + data = fetch_data(symbol, start_date, end_date) + + data_feed = bt.feeds.PandasData(dataname=data) + + # Initialize cerebro + cerebro = bt.Cerebro() + + # Add strategy + cerebro.addstrategy(strategy) + + # Add data feed + cerebro.adddata(data_feed) + + # Set initial cash + cerebro.broker.set_cash(10000) + + # Set commission + cerebro.broker.setcommission(commission=0.002) + + # Add analyzers + cerebro.addanalyzer(bt.analyzers.TradeAnalyzer, _name='tradeanalyzer') + cerebro.addanalyzer(bt.analyzers.DrawDown, _name='drawdown') + cerebro.addanalyzer(bt.analyzers.SharpeRatio_A, _name='sharpe') + + # Print starting conditions + print(f'Starting Portfolio Value: {cerebro.broker.getvalue():.2f}') + + # Run backtest + result = cerebro.run() + + # Extracting backtest metrics + total_return = cerebro.broker.getvalue() / 10000 - 1 + number_of_trades = result[0].analyzers.tradeanalyzer.get_analysis()['total']['closed'] + winning_trades = result[0].analyzers.tradeanalyzer.get_analysis()['won']['total'] + losing_trades = result[0].analyzers.tradeanalyzer.get_analysis()['lost']['total'] + max_drawdown = result[0].analyzers.drawdown.get_analysis()['max']['drawdown'] + sharpe_ratio = result[0].analyzers.sharpe.get_analysis()['sharperatio'] + + # Print ending conditions + print(f'Ending Portfolio Value: {cerebro.broker.getvalue():.2f}') + + # Return results as a dictionary + return { + 'backtest_id': 1, + 'total_return': total_return, + 'number_of_trades': number_of_trades, + 'winning_trades': winning_trades, + 'losing_trades': losing_trades, + 'max_drawdown': max_drawdown, + 'sharpe_ratio': sharpe_ratio + } + +if __name__ == "__main__": + symbol = 'ETH/USD' + start_date = '2023-06-20' + end_date = '2024-06-20' + + backtest_results_rsi = run_backtest(RsiBollingerBandsStrategy, symbol, start_date, end_date) + print("RSI Bollinger Bands Strategy Results:") + print(backtest_results_rsi) + + backtest_results_macd = run_backtest(MacdStrategy, symbol, start_date, end_date) + print("MACD Strategy Results:") + print(backtest_results_macd) + + backtest_results_stoch = run_backtest(StochasticOscillatorStrategy, symbol, start_date, end_date) + print("Stochastic Oscillator Strategy Results:") + print(backtest_results_stoch) diff --git a/scripts/data_ingestion.py b/scripts/data_ingestion.py index e69de29..30b6dcd 100644 --- a/scripts/data_ingestion.py +++ b/scripts/data_ingestion.py @@ -0,0 +1,47 @@ +import os +from dotenv import load_dotenv +from sqlalchemy import create_engine +import yfinance as yf +import pandas as pd +from time import sleep + +load_dotenv() + +# RDS connection information +rds_host = os.getenv('PG_HOST') +rds_port = os.getenv('PG_PORT') +rds_db = os.getenv('PG_DATABASE') +rds_user = os.getenv('PG_USER') +rds_password = os.getenv('PG_PASSWORD') + +# Connect to RDS (PostgreSQL) +engine = create_engine(f'postgresql+psycopg2://{rds_user}:{rds_password}@{rds_host}:{rds_port}/{rds_db}') + +def fetch_ohlcv(symbol, since): + try: + # Fetch data from Yahoo Finance + ticker = yf.Ticker(symbol) + ohlcv = ticker.history(period='1d', start=since) + return ohlcv.reset_index() + except Exception as e: + print(f"Error fetching data for {symbol}: {str(e)}") + return None + +def store_dataframe(df, table_name): + df.to_sql(table_name, con=engine, if_exists='append', index=False) + +# Fetch and store data for multiple symbols +symbols = ['BTC-USD', 'ETH-USD', 'BNB-USD', 'XRP-USD', 'ADA-USD', 'SOL1-USD', 'DOGE-USD', 'DOT1-USD', 'SHIB-USD', 'MATIC-USD', 'LTC-USD', 'UNI-USD', 'BCH-USD', 'LINK-USD', 'XLM-USD', 'ATOM-USD', 'VET-USD', 'ICP-USD', 'FIL-USD', 'THETA-USD'] +since = '2023-06-20' + +for symbol in symbols: + ohlcv = fetch_ohlcv(symbol, since) + if ohlcv is not None and not ohlcv.empty: + # Rename columns to match the existing structure if needed + df = ohlcv.rename(columns={'Date': 'timestamp', 'Open': 'open', 'High': 'high', 'Low': 'low', 'Close': 'close', 'Volume': 'volume'}) + store_dataframe(df, f'ohlcv_{symbol.replace("-", "_")}') + print(f'Stored data for {symbol}') + else: + print(f'Failed to fetch data for {symbol}') + sleep(1) # Add a delay to avoid hitting rate limits + From 08e06d1dc50976b81ce6398392485bdab33355be Mon Sep 17 00:00:00 2001 From: abyt101 Date: Sat, 22 Jun 2024 13:52:56 +0000 Subject: [PATCH 5/5] frontend init --- frontend/.gitignore | 23 + frontend/README.md | 70 + frontend/package-lock.json | 19857 ++++++++++++++++++++++++++++++ frontend/package.json | 42 + frontend/postcss.config.js | 6 + frontend/public/favicon.ico | Bin 0 -> 3870 bytes frontend/public/index.html | 43 + frontend/public/logo192.png | Bin 0 -> 5347 bytes frontend/public/logo512.png | Bin 0 -> 9664 bytes frontend/public/manifest.json | 25 + frontend/public/robots.txt | 3 + frontend/src/App.css | 38 + frontend/src/App.js | 21 + frontend/src/App.test.js | 8 + frontend/src/BacktestForm.js | 213 + frontend/src/Login.js | 107 + frontend/src/index.css | 4 + frontend/src/index.js | 17 + frontend/src/logo.svg | 1 + frontend/src/reportWebVitals.js | 13 + frontend/src/setupTests.js | 5 + frontend/tailwind.config.js | 8 + 22 files changed, 20504 insertions(+) create mode 100644 frontend/.gitignore create mode 100644 frontend/README.md create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/postcss.config.js create mode 100644 frontend/public/favicon.ico create mode 100644 frontend/public/index.html create mode 100644 frontend/public/logo192.png create mode 100644 frontend/public/logo512.png create mode 100644 frontend/public/manifest.json create mode 100644 frontend/public/robots.txt create mode 100644 frontend/src/App.css create mode 100644 frontend/src/App.js create mode 100644 frontend/src/App.test.js create mode 100644 frontend/src/BacktestForm.js create mode 100644 frontend/src/Login.js create mode 100644 frontend/src/index.css create mode 100644 frontend/src/index.js create mode 100644 frontend/src/logo.svg create mode 100644 frontend/src/reportWebVitals.js create mode 100644 frontend/src/setupTests.js create mode 100644 frontend/tailwind.config.js diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..58beeac --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,70 @@ +# Getting Started with Create React App + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in your browser. + +The page will reload when you make changes.\ +You may also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can't go back!** + +If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own. + +You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) + +### Analyzing the Bundle Size + +This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) + +### Making a Progressive Web App + +This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) + +### Advanced Configuration + +This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) + +### Deployment + +This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) + +### `npm run build` fails to minify + +This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..5397955 --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,19857 @@ +{ + "name": "frontend", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "frontend", + "version": "0.1.0", + "dependencies": { + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "axios": "^1.7.2", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-scripts": "5.0.1", + "web-vitals": "^2.1.4" + }, + "devDependencies": { + "tailwindcss": "^3.4.4" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", + "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", + "license": "MIT" + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.7.tgz", + "integrity": "sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA==", + "license": "MIT", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@babel/eslint-parser/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==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", + "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", + "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", + "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", + "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-wrap-function": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", + "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", + "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", + "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", + "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", + "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz", + "integrity": "sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-decorators": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@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.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", + "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-decorators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz", + "integrity": "sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz", + "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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-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==", + "license": "MIT", + "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.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", + "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", + "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", + "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", + "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.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-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.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-transform-flow-strip-types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.7.tgz", + "integrity": "sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-flow": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", + "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", + "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.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-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", + "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", + "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.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-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.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-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", + "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.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-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.7.tgz", + "integrity": "sha512-7LidzZfUXyfZ8/buRW6qIIHBY8wAZ1OrY9c/wTr8YhZ6vMPo+Uc/CVFLYY1spZrEQlD4w5u8wjqk5NQ3OVqQKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", + "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz", + "integrity": "sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", + "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", + "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", + "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", + "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz", + "integrity": "sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", + "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@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-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.7", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.7", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.7", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz", + "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.24.7", + "@babel/plugin-transform-react-jsx-development": "^7.24.7", + "@babel/plugin-transform-react-pure-annotations": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", + "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "license": "MIT" + }, + "node_modules/@babel/runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.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==", + "license": "MIT" + }, + "node_modules/@csstools/normalize.css": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.1.1.tgz", + "integrity": "sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ==", + "license": "CC0-1.0" + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "license": "CC0-1.0", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/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==", + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/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==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@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==", + "license": "ISC", + "dependencies": { + "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_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "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": "^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/@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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "license": "MIT", + "dependencies": { + "@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": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "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/@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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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/@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==", + "license": "MIT", + "dependencies": { + "@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/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "license": "MIT", + "dependencies": { + "@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/@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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "license": "MIT", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/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==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz", + "integrity": "sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==", + "license": "MIT", + "dependencies": { + "ansi-html": "^0.0.9", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^4.2.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <5.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x || 5.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz", + "integrity": "sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==", + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "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==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "license": "MIT", + "dependencies": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.12.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz", + "integrity": "sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/dom/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==", + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "peer": 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/@testing-library/dom/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==", + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/dom/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==", + "license": "MIT", + "peer": true + }, + "node_modules/@testing-library/dom/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==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/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==", + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/jest-dom/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==", + "license": "MIT" + }, + "node_modules/@testing-library/jest-dom/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/@testing-library/dom": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/react/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/react/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/react/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/react/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==", + "license": "MIT" + }, + "node_modules/@testing-library/react/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/user-event": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", + "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "license": "MIT" + }, + "node_modules/@types/jest/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@types/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@types/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==", + "license": "MIT" + }, + "node_modules/@types/jest/node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/jest/node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/@types/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.14.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.8.tgz", + "integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "license": "MIT" + }, + "node_modules/@types/q": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", + "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "license": "MIT", + "dependencies": { + "@types/jest": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "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/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "5.62.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/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "license": "MIT", + "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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "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/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "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/utils/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==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "license": "ISC" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "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==", + "license": "BSD-3-Clause" + }, + "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==", + "license": "Apache-2.0" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "license": "BSD-3-Clause" + }, + "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==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", + "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==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz", + "integrity": "sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "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==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz", + "integrity": "sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-array-method-boxes-properly": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz", + "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==", + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "license": "MIT", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "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==", + "license": "BSD-3-Clause", + "dependencies": { + "@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/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==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-named-asset-import": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", + "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "license": "MIT" + }, + "node_modules/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==", + "license": "MIT", + "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/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==", + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-react-app": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", + "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" + }, + "node_modules/bfj": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", + "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2", + "check-types": "^11.2.3", + "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "BSD-2-Clause" + }, + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "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==", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/check-types": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", + "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "license": "MIT" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "license": "MIT", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/compression/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==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "license": "MIT" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "license": "MIT", + "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": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", + "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.1.tgz", + "integrity": "sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "license": "MIT", + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "license": "CC0-1.0", + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "license": "MIT" + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "license": "MIT" + }, + "node_modules/cssdb": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.11.2.tgz", + "integrity": "sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "CC0-1.0" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" + }, + "node_modules/csso/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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "license": "BSD-2-Clause" + }, + "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==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "license": "MIT" + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "license": "MIT" + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.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==", + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "license": "Apache-2.0" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "license": "MIT" + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", + "license": "MIT", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "license": "BSD-2-Clause" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.810", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.810.tgz", + "integrity": "sha512-Kaxhu4T7SJGpRQx99tq216gCq2nMxJo+uuT6uzz9l8TVN2stL7M06MIIXAtr9jsrLs2Glflgf2vMQRepxawOdQ==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", + "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "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==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-react-app": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "license": "BSD-3-Clause", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", + "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", + "license": "MIT", + "dependencies": { + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.9.1", + "axobject-query": "~3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.34.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz", + "integrity": "sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.hasown": "^1.1.4", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", + "license": "MIT", + "dependencies": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/eslint-webpack-plugin/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/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==", + "license": "Python-2.0" + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/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==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "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==", + "license": "MIT", + "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/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "engines": { + "node": ">= 0.8.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "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==", + "license": "MIT", + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", + "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==", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "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/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/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==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "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==", + "license": "MIT", + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/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==", + "license": "MIT" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "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==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/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==", + "license": "ISC", + "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==", + "license": "BSD-2-Clause" + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "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/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "license": "MIT" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "license": "(Apache-2.0 OR MPL-1.1)" + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "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/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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "license": "MIT", + "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.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "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==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.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==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "license": "ISC" + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "license": "MIT", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/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==", + "license": "MIT", + "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==", + "license": "MIT", + "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": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "license": "MIT", + "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==", + "license": "MIT", + "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": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", + "dependencies": { + "@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/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/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==", + "license": "MIT" + }, + "node_modules/jake/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "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/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==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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": { + "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/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "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": "^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/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "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-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==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^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-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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": 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==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "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/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "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.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@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/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", + "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^28.0.0", + "jest-watcher": "^28.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "license": "MIT", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watch-typeahead/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watch-typeahead/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==", + "license": "MIT" + }, + "node_modules/jest-watch-typeahead/node_modules/emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "license": "MIT", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/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==", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "license": "MIT", + "dependencies": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", + "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi/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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "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" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "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==", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "license": "MIT", + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/jsonpath/node_modules/esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/launch-editor": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", + "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "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": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", + "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "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==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "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==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", + "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz", + "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==", + "license": "MIT", + "dependencies": { + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "gopd": "^1.0.1", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.hasown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "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==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "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.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT", + "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" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "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": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/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==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/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==", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/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==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "license": "CC0-1.0", + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "browserslist": ">=4", + "postcss": ">=8" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-flexbugs-fixes": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", + "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "license": "MIT", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "browserslist": ">= 4", + "postcss": ">= 8" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "license": "MIT", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "license": "MIT", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", + "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-cascade-layers": "^1.1.1", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.1.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.10", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.2.0", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-svgo/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==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/postcss-svgo/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" + }, + "node_modules/postcss-svgo/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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-svgo/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "license": "MIT", + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-app-polyfill": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", + "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", + "license": "MIT", + "dependencies": { + "core-js": "^3.19.2", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.9", + "whatwg-fetch": "^3.6.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-app-polyfill/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-dev-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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-dev-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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-dev-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==", + "license": "MIT" + }, + "node_modules/react-dev-utils/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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/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==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/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==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/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==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/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==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-error-overlay": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", + "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-scripts": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", + "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@svgr/webpack": "^5.5.0", + "babel-jest": "^27.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-named-asset-import": "^0.3.8", + "babel-preset-react-app": "^10.0.1", + "bfj": "^7.0.2", + "browserslist": "^4.18.1", + "camelcase": "^6.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.2.0", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "eslint": "^8.3.0", + "eslint-config-react-app": "^7.0.1", + "eslint-webpack-plugin": "^3.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "html-webpack-plugin": "^5.5.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^27.4.3", + "jest-resolve": "^27.4.2", + "jest-watch-typeahead": "^1.0.0", + "mini-css-extract-plugin": "^2.4.5", + "postcss": "^8.4.4", + "postcss-flexbugs-fixes": "^5.0.2", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.0.1", + "prompts": "^2.4.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.1", + "react-refresh": "^0.11.0", + "resolve": "^1.20.0", + "resolve-url-loader": "^4.0.0", + "sass-loader": "^12.3.0", + "semver": "^7.3.5", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.2", + "terser-webpack-plugin": "^5.2.5", + "webpack": "^5.64.4", + "webpack-dev-server": "^4.6.0", + "webpack-manifest-plugin": "^4.0.2", + "workbox-webpack-plugin": "^6.4.1" + }, + "bin": { + "react-scripts": "bin/react-scripts.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + }, + "peerDependencies": { + "react": ">= 16", + "typescript": "^3.2.1 || ^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "license": "MIT", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT", + "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": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-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==", + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "license": "MIT", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=8.9" + }, + "peerDependencies": { + "rework": "1.0.1", + "rework-visit": "1.0.0" + }, + "peerDependenciesMeta": { + "rework": { + "optional": true + }, + "rework-visit": { + "optional": true + } + } + }, + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/resolve-url-loader/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "license": "ISC" + }, + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/resolve-url-loader/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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/rollup-plugin-terser/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", + "license": "CC0-1.0" + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "license": "MIT", + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/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==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/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==", + "license": "MIT" + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "license": "MIT", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "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==", + "license": "MIT", + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", + "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": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "license": "MIT", + "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": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "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==", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.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==", + "license": "MIT", + "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==", + "license": "BSD-3-Clause", + "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==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "license": "MIT" + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "license": "MIT", + "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==", + "license": "MIT", + "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/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "license": "MIT" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "license": "MIT", + "dependencies": { + "escodegen": "^1.8.1" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-eval/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "license": "MIT", + "dependencies": { + "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": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/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==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-eval/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "license": "MIT", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width/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==", + "license": "MIT" + }, + "node_modules/string.prototype.includes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", + "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/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==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "license": "MIT" + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "license": "BSD-2-Clause" + }, + "node_modules/svgo/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/tailwindcss": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", + "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", + "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "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/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "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/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==", + "license": "MIT" + }, + "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==", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "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": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "license": "MIT" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "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": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "license": "MIT" + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "license": "MIT", + "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==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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==", + "license": "(MIT OR CC0-1.0)", + "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==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "license": "MIT", + "engines": { + "node": ">=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==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "license": "MIT" + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.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==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "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==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "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==", + "license": "ISC", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.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==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-vitals": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", + "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==", + "license": "Apache-2.0" + }, + "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==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.92.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", + "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.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-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "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-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "license": "MIT", + "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/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "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-manifest-plugin": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", + "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", + "license": "MIT", + "dependencies": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "webpack": "^4.44.2 || ^5.47.0" + } + }, + "node_modules/webpack-manifest-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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.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==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/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==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "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/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", + "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==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", + "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", + "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-build": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", + "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.0", + "workbox-broadcast-update": "6.6.0", + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-google-analytics": "6.6.0", + "workbox-navigation-preload": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-range-requests": "6.6.0", + "workbox-recipes": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0", + "workbox-streams": "6.6.0", + "workbox-sw": "6.6.0", + "workbox-window": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "license": "MIT", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/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==", + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "license": "BSD-2-Clause" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", + "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", + "deprecated": "workbox-background-sync@6.6.0", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-core": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", + "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==", + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", + "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", + "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", + "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained", + "license": "MIT", + "dependencies": { + "workbox-background-sync": "6.6.0", + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", + "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-precaching": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", + "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", + "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-recipes": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", + "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-routing": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", + "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-strategies": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", + "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-streams": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", + "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0" + } + }, + "node_modules/workbox-sw": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", + "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==", + "license": "MIT" + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", + "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/workbox-window": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", + "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "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==", + "license": "ISC", + "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.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "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/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==", + "license": "Apache-2.0" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "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==", + "license": "MIT", + "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==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..9c9fc77 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,42 @@ +{ + "name": "frontend", + "version": "0.1.0", + "private": true, + "dependencies": { + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "axios": "^1.7.2", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-scripts": "5.0.1", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "tailwindcss": "^3.4.4" + } +} diff --git a/frontend/postcss.config.js b/frontend/postcss.config.js new file mode 100644 index 0000000..33ad091 --- /dev/null +++ b/frontend/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/frontend/public/index.html b/frontend/public/index.html new file mode 100644 index 0000000..aa069f2 --- /dev/null +++ b/frontend/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
+ + + diff --git a/frontend/public/logo192.png b/frontend/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/frontend/public/manifest.json b/frontend/public/manifest.json new file mode 100644 index 0000000..080d6c7 --- /dev/null +++ b/frontend/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/frontend/public/robots.txt b/frontend/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/frontend/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/frontend/src/App.css b/frontend/src/App.css new file mode 100644 index 0000000..74b5e05 --- /dev/null +++ b/frontend/src/App.css @@ -0,0 +1,38 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/frontend/src/App.js b/frontend/src/App.js new file mode 100644 index 0000000..6dece69 --- /dev/null +++ b/frontend/src/App.js @@ -0,0 +1,21 @@ +// src/App.js + +import React from 'react'; +import './App.css'; +import Login from './Login'; +import BacktestForm from './BacktestForm'; + +function App() { + return ( +
+ {/*
+

Welcome to Backtest App

+
*/} +
+ +
+
+ ); +} + +export default App; diff --git a/frontend/src/App.test.js b/frontend/src/App.test.js new file mode 100644 index 0000000..1f03afe --- /dev/null +++ b/frontend/src/App.test.js @@ -0,0 +1,8 @@ +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + render(); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/frontend/src/BacktestForm.js b/frontend/src/BacktestForm.js new file mode 100644 index 0000000..766ed0c --- /dev/null +++ b/frontend/src/BacktestForm.js @@ -0,0 +1,213 @@ +// BacktestForm.js + +import React, { useState, useEffect } from 'react'; +import axios from 'axios'; + +const API_BASE_URL = 'https://your-api-base-url.com/api'; // Replace with your actual API base URL + +const BacktestForm = () => { + const [formData, setFormData] = useState({ + coin: '', + name: '', + start_date: '', + end_date: '', + parameters: [{ indicator_id: '', value: '' }], + }); + const [token, setToken] = useState(''); + const [coins, setCoins] = useState([]); + const [indicators, setIndicators] = useState([]); + + // Fetch coins and indicators on component mount + useEffect(() => { + const fetchCoins = async () => { + try { + const response = await axios.get(`${API_BASE_URL}/coins`, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + setCoins(response.data.coins); // Assuming API returns coins array + } catch (error) { + console.error('Error fetching coins:', error); + } + }; + + const fetchIndicators = async () => { + try { + const response = await axios.get(`${API_BASE_URL}/indicators`, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + setIndicators(response.data.indicators); // Assuming API returns indicators array + } catch (error) { + console.error('Error fetching indicators:', error); + } + }; + + // Call functions to fetch coins and indicators + fetchCoins(); + fetchIndicators(); + }, [token]); + + // Function to handle form input change + const handleInputChange = (index, event) => { + const { name, value } = event.target; + const updatedParameters = [...formData.parameters]; + updatedParameters[index][name] = value; + setFormData({ ...formData, parameters: updatedParameters }); + }; + + // Function to add new parameter field + const addParameter = () => { + setFormData({ + ...formData, + parameters: [...formData.parameters, { indicator_id: '', value: '' }], + }); + }; + + // Function to handle form submission + const handleSubmit = async (event) => { + event.preventDefault(); + + try { + const response = await axios.post(`${API_BASE_URL}/backtests`, formData, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + + // Handle successful response + console.log('Backtest created:', response.data); + // Reset form fields after successful submission (optional) + setFormData({ + coin: '', + name: '', + start_date: '', + end_date: '', + parameters: [{ indicator_id: '', value: '' }], + }); + } catch (error) { + console.error('Error creating backtest:', error); + // Handle error, show error message to user + } + }; + + return ( +
+

Create Backtest

+
+
+ + +
+
+ + setFormData({ ...formData, name: e.target.value })} + required + className="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" + /> +
+
+ + setFormData({ ...formData, start_date: e.target.value })} + required + className="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" + /> +
+
+ + setFormData({ ...formData, end_date: e.target.value })} + required + className="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" + /> +
+
+ Parameters: + {formData.parameters.map((param, index) => ( +
+
+ + +
+
+ + handleInputChange(index, e)} + step="any" + required + className="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" + placeholder="Value" + /> +
+
+ ))} + +
+
+ +
+
+
+ ); +}; + +export default BacktestForm; diff --git a/frontend/src/Login.js b/frontend/src/Login.js new file mode 100644 index 0000000..66fe424 --- /dev/null +++ b/frontend/src/Login.js @@ -0,0 +1,107 @@ +// src/Login.js +import React, { useState } from 'react'; +import axios from 'axios'; + +const API_BASE_URL = 'https://your-api-base-url.com/api'; // Replace with your actual API base URL + +const Login = () => { + const [username, setUsername] = useState(''); + const [password, setPassword] = useState(''); + + // Function to handle form submission + const handleSubmit = async (event) => { + event.preventDefault(); + + try { + const response = await axios.post(`${API_BASE_URL}/login`, { + username, + password, + }); + + // Assuming your API returns a token upon successful login + const { token } = response.data; + // Store the token in localStorage or sessionStorage + localStorage.setItem('token', token); + + // Redirect to another page or handle successful login + console.log('Login successful!'); + } catch (error) { + console.error('Error logging in:', error); + // Handle error, show error message to user + } + }; + + return ( +
+ ); +}; + +export default Login; diff --git a/frontend/src/index.css b/frontend/src/index.css new file mode 100644 index 0000000..60492d3 --- /dev/null +++ b/frontend/src/index.css @@ -0,0 +1,4 @@ +/* src/index.css */ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/frontend/src/index.js b/frontend/src/index.js new file mode 100644 index 0000000..d563c0f --- /dev/null +++ b/frontend/src/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import App from './App'; +import reportWebVitals from './reportWebVitals'; + +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render( + + + +); + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/frontend/src/logo.svg b/frontend/src/logo.svg new file mode 100644 index 0000000..9dfc1c0 --- /dev/null +++ b/frontend/src/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/reportWebVitals.js b/frontend/src/reportWebVitals.js new file mode 100644 index 0000000..5253d3a --- /dev/null +++ b/frontend/src/reportWebVitals.js @@ -0,0 +1,13 @@ +const reportWebVitals = onPerfEntry => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/frontend/src/setupTests.js b/frontend/src/setupTests.js new file mode 100644 index 0000000..8f2609b --- /dev/null +++ b/frontend/src/setupTests.js @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom'; diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js new file mode 100644 index 0000000..132ade2 --- /dev/null +++ b/frontend/tailwind.config.js @@ -0,0 +1,8 @@ +// tailwind.config.js +module.exports = { + content: [], + theme: { + extend: {}, + }, + plugins: [], +}