From 61a4f15109ae32810d192fd423394f236cb8b66e Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Fri, 2 Jun 2023 12:46:41 +0200 Subject: [PATCH] Create README Create README.md upgraded readme upgraded upgraded Added an example of a console chat Upgraded code upgraded submodule upgraded example upgraded console application Added some logo and readme upgraded upgraded updated updated changed logo upgraded upgrade upgraded upgraded upgraded version Added console app upgraded code and service information changed documentation title upgraded code updated zoo Upgraded logo upgradded Update server_endpoints.md Update README.md Update server_endpoints.md Enhanced code enhanced work + added training fixed error in README upgraded readme Fixed console problem enhanced code Added reference to models upgraded version Update README.md upgraded binding Update README.md enhanced server upgraded console and server upgraded tool upgraded upgraded Upgraded to new Version enhanced updated personalities zoo personalities_zoo upgraded readme Possibility to send files to personalities Possibility to send files to personalities upgraded code bugfix updated upgraded upgraded console updated readme version upgrade Update README.md Added menu build at startup change upgraded code now you select a personality of not selected upgraded upgraded documentation upgraded documentation updated Upgraded bugfix now you can build custom personalities updated. now we can use other personalities Bugfix added return changed colors added protection added back to personality installation bugfix typo fixed autogptq fixed autogptq gptq upgraded gptq changed version upgraded console typo Added send file updated send file upgraded personality upgraded image analysis tool updated upgraded version upgraded tool updated gpt4all is now working version update upgraded naming scheme hapen Upgraded path data upgraded version updated upgraded version upgraded install procedures personal path can be changed online upgraded chatgpt upgraded upgraded updated version bugfix upgraded personalities upgraded version enhanced enhanced update bugfix version update Added reset functionality Added settings upgraded enhanced library upgraded models Upgraded upgraded rebased upgraded code fixed gpt4all updated version --- .gitignore | 21 + .gitmodules | 16 + .vscode/settings.json | 3 + MANIFEST.in | 9 + README.md | 273 + doc/server_endpoints.md | 309 + examples/chat_forever/console.py | 27 + examples/lllm_qt_client/README.md | 43 + examples/lllm_qt_client/assets/connected.svg | 4 + .../lllm_qt_client/assets/disconnected.svg | 4 + examples/lllm_qt_client/lllm_qt_client.py | 184 + examples/lllm_qt_client/requirements.txt | 3 + examples/simple_story/console.py | 17 + examples/vujs_web_ui/lollms_webui/.gitignore | 23 + examples/vujs_web_ui/lollms_webui/README.md | 24 + .../vujs_web_ui/lollms_webui/babel.config.js | 5 + .../vujs_web_ui/lollms_webui/jsconfig.json | 19 + .../lollms_webui/package-lock.json | 11920 ++++++++++++++++ .../vujs_web_ui/lollms_webui/package.json | 45 + .../lollms_webui/public/favicon.ico | Bin 0 -> 4286 bytes .../lollms_webui/public/index.html | 17 + examples/vujs_web_ui/lollms_webui/src/App.vue | 124 + .../lollms_webui/src/assets/css/app.css | 3 + .../lollms_webui/src/assets/css/tailwind.css | 3 + .../lollms_webui/src/assets/logo.png | Bin 0 -> 6849 bytes .../src/components/HelloWorld.vue | 58 + examples/vujs_web_ui/lollms_webui/src/main.js | 6 + .../lollms_webui/tailwind.config.js | 14 + .../vujs_web_ui/lollms_webui/vue.config.js | 12 + lollms/__init__.py | 70 + lollms/assets/logo.png | Bin 0 -> 470378 bytes lollms/binding.py | 293 + lollms/bindings_zoo | 1 + lollms/configs/.gitignore | 1 + lollms/configs/config.yaml | 28 + lollms/console.py | 563 + lollms/helpers.py | 109 + lollms/langchain_integration.py | 267 + lollms/paths.py | 178 + lollms/personalities_zoo | 1 + lollms/personality.py | 989 ++ lollms/server.py | 457 + lollms/settings.py | 265 + requirements.txt | 7 + requirements_dev.txt | 7 + setup.py | 52 + train/.gitignore | 2 + train/configs/deepspeed/ds_config.yaml | 48 + train/configs/train/finetune.yaml | 29 + train/configs/train/finetune_lora.yaml | 31 + .../finetune_lora_ airoboros-7b-gpt4.yaml | 31 + train/requirements.txt | 15 + train/train.py | 233 + 53 files changed, 16863 insertions(+) create mode 100644 .gitmodules create mode 100644 .vscode/settings.json create mode 100644 MANIFEST.in create mode 100644 README.md create mode 100644 doc/server_endpoints.md create mode 100644 examples/chat_forever/console.py create mode 100644 examples/lllm_qt_client/README.md create mode 100644 examples/lllm_qt_client/assets/connected.svg create mode 100644 examples/lllm_qt_client/assets/disconnected.svg create mode 100644 examples/lllm_qt_client/lllm_qt_client.py create mode 100644 examples/lllm_qt_client/requirements.txt create mode 100644 examples/simple_story/console.py create mode 100644 examples/vujs_web_ui/lollms_webui/.gitignore create mode 100644 examples/vujs_web_ui/lollms_webui/README.md create mode 100644 examples/vujs_web_ui/lollms_webui/babel.config.js create mode 100644 examples/vujs_web_ui/lollms_webui/jsconfig.json create mode 100644 examples/vujs_web_ui/lollms_webui/package-lock.json create mode 100644 examples/vujs_web_ui/lollms_webui/package.json create mode 100644 examples/vujs_web_ui/lollms_webui/public/favicon.ico create mode 100644 examples/vujs_web_ui/lollms_webui/public/index.html create mode 100644 examples/vujs_web_ui/lollms_webui/src/App.vue create mode 100644 examples/vujs_web_ui/lollms_webui/src/assets/css/app.css create mode 100644 examples/vujs_web_ui/lollms_webui/src/assets/css/tailwind.css create mode 100644 examples/vujs_web_ui/lollms_webui/src/assets/logo.png create mode 100644 examples/vujs_web_ui/lollms_webui/src/components/HelloWorld.vue create mode 100644 examples/vujs_web_ui/lollms_webui/src/main.js create mode 100644 examples/vujs_web_ui/lollms_webui/tailwind.config.js create mode 100644 examples/vujs_web_ui/lollms_webui/vue.config.js create mode 100644 lollms/__init__.py create mode 100644 lollms/assets/logo.png create mode 100644 lollms/binding.py create mode 160000 lollms/bindings_zoo create mode 100644 lollms/configs/.gitignore create mode 100644 lollms/configs/config.yaml create mode 100644 lollms/console.py create mode 100644 lollms/helpers.py create mode 100644 lollms/langchain_integration.py create mode 100644 lollms/paths.py create mode 160000 lollms/personalities_zoo create mode 100644 lollms/personality.py create mode 100644 lollms/server.py create mode 100644 lollms/settings.py create mode 100644 requirements.txt create mode 100644 requirements_dev.txt create mode 100644 setup.py create mode 100644 train/.gitignore create mode 100644 train/configs/deepspeed/ds_config.yaml create mode 100644 train/configs/train/finetune.yaml create mode 100644 train/configs/train/finetune_lora.yaml create mode 100644 train/configs/train/finetune_lora_ airoboros-7b-gpt4.yaml create mode 100644 train/requirements.txt create mode 100644 train/train.py diff --git a/.gitignore b/.gitignore index 68bc17f..bbb090c 100644 --- a/.gitignore +++ b/.gitignore @@ -158,3 +158,24 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ + +# Custom stuff +.installed + +shared/* +*.ckpt +*.safetensors + +models + +# rest tests +*.http + +# shared resources +shared +src +temp +outputs + +# Global path configuration +global_paths_cfg.yaml \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e12d816 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,16 @@ +[submodule "lollms/bindings_zoo"] + path = lollms/bindings_zoo + url = https://github.com/ParisNeo/lollms_bindings_zoo.git + branch = main +[submodule "lollms/personalities_zoo"] + path = lollms/personalities_zoo + url = https://github.com/ParisNeo/lollms_personalities_zoo.git + branch = main +[submodule "lollms/bindings_zoo"] + path = lollms/bindings_zoo + url = https://github.com/ParisNeo/lollms_bindings_zoo.git + branch = main +[submodule "lollms/personalities_zoo"] + path = lollms/personalities_zoo + url = https://github.com/ParisNeo/lollms_personalities_zoo.git + branch = main diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5d7d730 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "ros.distro": "noetic" +} \ No newline at end of file diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..7ccfddb --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,9 @@ +recursive-include lollms/configs * +recursive-include lollms/bindings_zoo * +recursive-include lollms/personalities_zoo * +global-exclude *.bin +global-exclude *.pyc +global-exclude local_config.yaml +global-exclude .installed +global-exclude .git +global-exclude .gitignore \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..ecf38bd --- /dev/null +++ b/README.md @@ -0,0 +1,273 @@ +# Lord of Large Language Models (LoLLMs) +
+ Logo +
+ +![GitHub license](https://img.shields.io/github/license/ParisNeo/lollms) +![GitHub issues](https://img.shields.io/github/issues/ParisNeo/lollms) +![GitHub stars](https://img.shields.io/github/stars/ParisNeo/lollms) +![GitHub forks](https://img.shields.io/github/forks/ParisNeo/lollms) +[![Discord](https://img.shields.io/discord/1092918764925882418?color=7289da&label=Discord&logo=discord&logoColor=ffffff)](https://discord.gg/4rR282WJb6) +[![Follow me on Twitter](https://img.shields.io/twitter/follow/SpaceNerduino?style=social)](https://twitter.com/SpaceNerduino) +[![Follow Me on YouTube](https://img.shields.io/badge/Follow%20Me%20on-YouTube-red?style=flat&logo=youtube)](https://www.youtube.com/user/Parisneo) + +Lord of Large Language Models (LoLLMs) Server is a text generation server based on large language models. It provides a Flask-based API for generating text using various pre-trained language models. This server is designed to be easy to install and use, allowing developers to integrate powerful text generation capabilities into their applications. + +## Features + +- Fully integrated library with access to bindings, personalities and helper tools. +- Generate text using large language models. +- Supports multiple personalities for generating text with different styles and tones. +- Real-time text generation with WebSocket-based communication. +- RESTful API for listing personalities and adding new personalities. +- Easy integration with various applications and frameworks. +- Possibility to send files to personalities + +## Installation + +You can install LoLLMs using pip, the Python package manager. Open your terminal or command prompt and run the following command: + +```bash +pip install --upgrade lollms +``` + +Or if you want to get the latest version from the git: + +```bash +pip install --upgrade git+https://github.com/ParisNeo/lollms.git +``` + + +To simply configure your environment run the console app: + +```bash +lollms-console +``` + +The first time you will be prompted to select a binding. +![image](https://github.com/ParisNeo/lollms/assets/827993/2d7f58fe-089d-4d3e-a21a-0609f8e27969) + +Once the binding is selected, you have to install at least a model. You have two options: + +1- install from internet. Just give the link to a model on hugging face. For example. if you select the default llamacpp python bindings (7), you can install this model: +```bash +https://huggingface.co/TheBloke/airoboros-7b-gpt4-GGML/resolve/main/airoboros-7b-gpt4.ggmlv3.q4_1.bin +``` +2- install from local drive. Just give the path to a model on your pc. The model will not be copied. We only create a reference to the model. This is useful if you use multiple clients so that you can mutualize your models with other tools. + + +Now you are ready to use the server. + +## Library example + +Here is the smallest possible example that allows you to use the full potential of the tool with nearly no code +```python +from lollms.console import Conversation + +cv = Conversation(None) +cv.start_conversation() +``` +Now you can reimplement the start_conversation method to do the things you want: +```python +from lollms.console import Conversation + +class MyConversation(Conversation): + def __init__(self, cfg=None): + super().__init__(cfg, show_welcome_message=False) + + def start_conversation(self): + prompt = "Once apon a time" + def callback(text, type=None): + print(text, end="", flush=True) + return True + print(prompt, end="", flush=True) + output = self.safe_generate(prompt, callback=callback) + +if __name__ == '__main__': + cv = MyConversation() + cv.start_conversation() +``` + +Or if you want here is a conversation tool written in few lines +```python +from lollms.console import Conversation + +class MyConversation(Conversation): + def __init__(self, cfg=None): + super().__init__(cfg, show_welcome_message=False) + + def start_conversation(self): + full_discussion="" + while True: + prompt = input("You: ") + if prompt=="exit": + return + if prompt=="menu": + self.menu.main_menu() + full_discussion += self.personality.user_message_prefix+prompt+self.personality.link_text + full_discussion += self.personality.ai_message_prefix + def callback(text, type=None): + print(text, end="", flush=True) + return True + print(self.personality.name+": ",end="",flush=True) + output = self.safe_generate(full_discussion, callback=callback) + full_discussion += output.strip()+self.personality.link_text + print() + +if __name__ == '__main__': + cv = MyConversation() + cv.start_conversation() +``` +Here we use the safe_generate method that does all the cropping for you ,so you can chat forever and will never run out of context. + +## Socket IO Server Usage + +Once installed, you can start the LoLLMs Server using the `lollms-server` command followed by the desired parameters. + +``` +lollms-server --host --port --config --bindings_path --personalities_path --models_path --binding_name --model_name --personality_full_name +``` + +### Parameters + +- `--host`: The hostname or IP address to bind the server (default: localhost). +- `--port`: The port number to run the server (default: 9600). +- `--config`: Path to the configuration file (default: None). +- `--bindings_path`: The path to the Bindings folder (default: "./bindings_zoo"). +- `--personalities_path`: The path to the personalities folder (default: "./personalities_zoo"). +- `--models_path`: The path to the models folder (default: "./models"). +- `--binding_name`: The default binding to be used (default: "llama_cpp_official"). +- `--model_name`: The default model name (default: "Manticore-13B.ggmlv3.q4_0.bin"). +- `--personality_full_name`: The full name of the default personality (default: "personality"). + +### Examples + +Start the server with default settings: + +``` +lollms-server +``` + +Start the server on a specific host and port: + +``` +lollms-server --host 0.0.0.0 --port 5000 +``` +## API Endpoints + +### WebSocket Events + +- `connect`: Triggered when a client connects to the server. +- `disconnect`: Triggered when a client disconnects from the server. +- `list_personalities`: List all available personalities. +- `add_personality`: Add a new personality to the server. +- `generate_text`: Generate text based on the provided prompt and selected personality. + +For more details refer to the [API documentation](doc/server_endpoints.md) + +### RESTful API + +- `GET /personalities`: List all available personalities. +- `POST /personalities`: Add a new personality to the server. + +Sure! Here are examples of how to communicate with the LoLLMs Server using JavaScript and Python. + +### JavaScript Example + +```javascript +// Establish a WebSocket connection with the server +const socket = io.connect('http://localhost:9600'); + +// Event: When connected to the server +socket.on('connect', () => { + console.log('Connected to the server'); + + // Request the list of available personalities + socket.emit('list_personalities'); +}); + +// Event: Receive the list of personalities from the server +socket.on('personalities_list', (data) => { + const personalities = data.personalities; + console.log('Available Personalities:', personalities); + + // Select a personality and send a text generation request + const selectedPersonality = personalities[0]; + const prompt = 'Once upon a time...'; + socket.emit('generate_text', { personality: selectedPersonality, prompt: prompt }); +}); + +// Event: Receive the generated text from the server +socket.on('text_generated', (data) => { + const generatedText = data.text; + console.log('Generated Text:', generatedText); + + // Do something with the generated text +}); + +// Event: When disconnected from the server +socket.on('disconnect', () => { + console.log('Disconnected from the server'); +}); +``` + +### Python Example + +```python +import socketio + +# Create a SocketIO client +sio = socketio.Client() + +# Event: When connected to the server +@sio.on('connect') +def on_connect(): + print('Connected to the server') + + # Request the list of available personalities + sio.emit('list_personalities') + +# Event: Receive the list of personalities from the server +@sio.on('personalities_list') +def on_personalities_list(data): + personalities = data['personalities'] + print('Available Personalities:', personalities) + + # Select a personality and send a text generation request + selected_personality = personalities[0] + prompt = 'Once upon a time...' + sio.emit('generate_text', {'personality': selected_personality, 'prompt': prompt}) + +# Event: Receive the generated text from the server +@sio.on('text_generated') +def on_text_generated(data): + generated_text = data['text'] + print('Generated Text:', generated_text) + + # Do something with the generated text + +# Event: When disconnected from the server +@sio.on('disconnect') +def on_disconnect(): + print('Disconnected from the server') + +# Connect to the server +sio.connect('http://localhost:9600') + +# Keep the client running +sio.wait() +``` + +Make sure to have the necessary dependencies installed for the JavaScript and Python examples. For JavaScript, you need the `socket.io-client` package, and for Python, you need the `python-socketio` package. + +## Contributing + +Contributions to the LoLLMs Server project are welcome and appreciated. If you would like to contribute, please follow the guidelines outlined in the [CONTRIBUTING.md](https://github.com/ParisNeo/lollms/blob/main/CONTRIBUTING.md) file. + +## License + +LoLLMs Server is licensed under the Apache 2.0 License. See the [LICENSE](https://github.com/ParisNeo/lollms/blob/main/LICENSE) file for more information. + +## Repository + +The source code for LoLLMs Server can be found on GitHub diff --git a/doc/server_endpoints.md b/doc/server_endpoints.md new file mode 100644 index 0000000..f2679e4 --- /dev/null +++ b/doc/server_endpoints.md @@ -0,0 +1,309 @@ +# Lord Of Large Language Models Socket.io Endpoints Documentation + +Logo + +The server provides several Socket.io endpoints that clients can use to interact with the server. The default URL for the server is `http://localhost:9600`, but it can be changed using the configuration file or launch parameters. + +## Endpoints + +### `connect` +- Event: `'connect'` +- Description: This event is triggered when a client connects to the server. +- Actions: + - Adds the client to the list of connected clients with a unique session ID. + - Prints a message indicating the client's session ID. + +### `disconnect` +- Event: `'disconnect'` +- Description: This event is triggered when a client disconnects from the server. +- Actions: + - Removes the client from the list of connected clients, if it exists. + - Prints a message indicating the client's session ID. + +#### `list_available_bindings` +- Event: `'list_available_bindings'` +- Description: This event is triggered when a client requests a list of available bindings. +- Parameters: None +- Actions: + - Initializes an empty list `binding_infs` to store information about each binding. + - Iterates over the files and directories in the `self.bindings_path` directory. + - For each directory in `self.bindings_path`: + - Reads the content of the `binding_card.yaml` file, which contains information about the binding card. + - Reads the content of the `models.yaml` file, which contains information about the models associated with the binding. + - Creates an entry dictionary that includes the binding's name, card information, and model information. + - Appends the entry to the `binding_infs` list. + - Emits a response event `'bindings_list'` to the client containing the list of available bindings and their information (`bindings`) as well as a `success` parameter that is `False` when not successful. + +Events generated: +- `'bindings_list'`: Sent to the client as a response to the `'list_available_bindings'` request. It contains the list of available bindings along with their associated information (`binding_infs`). + + +#### `list_available_personalities` +- Event: `'list_available_personalities'` +- Description: This event is triggered when a client requests a list of available personalities. +- Parameters: None +- Actions: + - Retrieves the path to the personalities folder from the server (`self.personalities_path`). + - Initializes an empty dictionary to store the available personalities. + - Iterates over each language folder in the personalities folder. + - Checks if the current item is a directory. + - Initializes an empty dictionary to store the personalities within the language. + - Iterates over each category folder within the language folder. + - Checks if the current item is a directory. + - Initializes an empty list to store the personalities within the category. + - Iterates over each personality folder within the category folder. + - Checks if the current item is a directory. + - Tries to load personality information from the config file (`config.yaml`) within the personality folder. + - Retrieves the name, description, author, and version from the config data. + - Checks if the `scripts` folder exists within the personality folder to determine if the personality has scripts. + - Checks for the existence of logo files named `logo.gif` or `logo.webp` or `logo.png` or `logo.jpg` or `logo.jpeg` or `logo.bmp` within the `assets` folder to determine if the personality has a logo. + - Sets the `avatar` field of the personality info based on the available logo file. + - Appends the personality info to the list of personalities within the category. + - Adds the list of personalities to the dictionary of the current category within the language. + - Adds the dictionary of categories to the dictionary of the current language. + - Sends a response to the client containing the dictionary of available personalities. + +Events generated: +- `'personalities_list'`: Emits an event to the client with the list of available personalities, categorized by language and category. The event data includes the personality information such as name, description, author, version, presence of scripts, and avatar image file path. + + +#### `list_available_models` +- Event: `'list_available_models'` +- Description: This event is triggered when a client requests a list of available models. +- Parameters: None (except `self` which refers to the class instance) +- Actions: + - Checks if a binding class is selected. If not, emits an event `'available_models_list'` with a failure response indicating that no binding is selected. + - Retrieves the list of available models using the binding class. + - Processes each model in the list to extract relevant information such as filename, server, image URL, license, owner, owner link, filesize, description, model type, etc. + - Constructs a dictionary representation for each model with the extracted information. + - Appends each model dictionary to the `models` list. + - Emits an event `'available_models_list'` with a success response containing the list of available models to the client. + +Events generated: +- `'available_models_list'`: This event is emitted as a response to the client requesting a list of available models. It contains the success status and a list of available models with their details, such as title, icon, license, owner, owner link, description, installation status, file path, filesize, and model type. + + + +#### `list_available_personalities_languages` +- Event: `'list_available_personalities_languages'` +- Description: This event is triggered when a client requests a list of available personality languages. +- Actions: + - Attempts to retrieve a list of available personality languages by iterating over the `self.personalities_path` directory. + - Sends a response to the client containing the success status and the list of available personality languages. + +Parameters: None + +Events: +- `'available_personalities_languages_list'`: This event is emitted as a response to the client after listing the available personality languages. + - Data: + - `'success'` (boolean): Indicates whether the operation was successful or not. + - `'available_personalities_languages'` (list): Contains the available personality languages as a list of strings. + + +#### `list_available_personalities_categories` +- Event: `'list_available_personalities_categories'` +- Description: This event is triggered when a client requests a list of available personality categories based on a specified language. +- Parameters: + - `data`: A dictionary containing the following parameter: + - `language`: The language for which to retrieve available personality categories. + +- Actions: + - Extracts the `language` parameter from the request data. + - Attempts to retrieve the available personality categories for the specified language. + - Emits an event `'available_personalities_categories_list'` to the client. + - If successful, sends a response with a list of available personality categories in the `'available_personalities_categories'` field of the event data. + - If an error occurs, sends a response with an error message in the `'error'` field of the event data. + +Events: +- Event: `'available_personalities_categories_list'` + - Description: This event is emitted in response to the `list_available_personalities_categories` event. + - Data: + - If successful: + - `'success'` (boolean): Indicates whether the retrieval of available personality categories was successful. + - `'available_personalities_categories'` (list): A list of available personality categories. + - If an error occurs: + - `'success'` (boolean): Indicates whether an error occurred during the retrieval of available personality categories. + - `'error'` (string): The error message describing the encountered error. + + +#### `list_available_personalities_names` +- Event: `'list_available_personalities_names'` +- Description: This event is triggered when a client requests a list of available personality names based on the specified language and category. +- Parameters: + - `language` (string): The language for which the available personality names are requested. + - `category` (string): The category for which the available personality names are requested. +- Actions: + - Extracts the `language` and `category` parameters from the request data. + - Retrieves the list of available personalities by iterating over the directory specified by the `language` and `category` parameters. + - Sends a response to the client containing the list of available personality names. +- Event Generated: `'list_available_personalities_names_list'` + - Description: This event is emitted as a response to the `list_available_personalities_names` request, providing the list of available personality names. + - Parameters: + - `success` (bool): Indicates the success or failure of the request. + - `list_available_personalities_names` (list): The list of available personality names. + - `error` (string, optional): If the request fails, this parameter contains the error message. + + + +#### `select_binding` +- Event: `'select_binding'` +- Description: This event is triggered when a client selects a binding. +- Parameters: + - `data['binding_name']`: The name of the binding selected by the client. + +Actions: +- Creates a deep copy of the `self.config` dictionary and assigns it to `self.cp_config` variable. +- Updates the `"binding_name"` value in `self.cp_config` with the selected binding name obtained from `data['binding_name']`. +- Attempts to build a binding instance using the `self.bindings_path` and `self.cp_config`. +- If successful, updates `self.binding_class` with the created binding instance and updates `self.config` with `self.cp_config`. +- Sends a response to the client indicating the success of the binding selection along with the selected binding name. +- If an exception occurs during the binding creation process, the exception is printed and a response is sent to the client indicating the failure of the binding selection along with the selected binding name and the error message. + +Events generated: +- `'select_binding'`: This event is emitted to the client to provide a response regarding the binding selection. It contains the following data: + - `'success'`: A boolean value indicating the success or failure of the binding selection. + - `'binding_name'`: The name of the selected binding. + - If the binding selection fails, it also includes: + - `'error'`: An error message explaining the reason for the failure. + + +#### `select_model` +- Event: `'select_model'` +- Description: This event is triggered when a client requests to select a model. +- Parameters: + - `data['model_name']` (string): The name of the model to select. +- Actions: + - Extracts the model name from the request data. + - Checks if a binding class is available (`self.binding_class`). + - If no binding class is available, emits a `'select_model'` event with a failure response, indicating that a binding needs to be selected first. + - Returns and exits the function. + - Creates a deep copy of the configuration (`self.config`) and assigns it to `self.cp_config`. + - Sets the `"model_name"` property of `self.cp_config` to the selected model name. + - Tries to create an instance of the binding class (`self.binding_class`) with `self.cp_config`. + - If successful, assigns the created binding instance to `self.current_model`. + - Emits a `'select_model'` event with a success response, indicating that the model selection was successful. + - Returns and exits the function. + - If an exception occurs during model creation, prints the exception and emits a `'select_model'` event with a failure response, indicating that a binding needs to be selected first. + +Events generated: +- `'select_model'` (success response): + - Emits to the client a success response indicating that the model selection was successful. + - Parameters: + - `'success'` (boolean): `True` to indicate success. + - `'model_name'` (string): The selected model name. +- `'select_model'` (failure response): + - Emits to the client a failure response indicating that a binding needs to be selected first or an error occurred during model creation. + - Parameters: + - `'success'` (boolean): `False` to indicate failure. + - `'model_name'` (string): The selected model name. + - `'error'` (string): An error message providing additional details. + + +#### `add_personality` +- Event: `'add_personality'` +- Description: This event is triggered when a client requests to add a new personality. +- Parameters: + - `data`: A dictionary containing the following key-value pairs: + - `'path'`: The path to the personality file. +- Actions: + - Extracts the personality path from the `data` dictionary. + - Attempts to create a new `AIPersonality` instance with the provided path. + - Appends the created personality to the `self.personalities` list. + - Appends the personality path to the `self.config["personalities"]` list. + - Saves the updated configuration using `self.config.save_config()`. + - Sends a response to the client indicating the success of the personality addition along with the name and ID of the added personality. +- Events Generated: + - `'personality_added'`: This event is emitted to the client to indicate the successful addition of the personality. The emitted data is a dictionary with the following key-value pairs: + - `'success'`: `True` to indicate success. + - `'name'`: The name of the added personality. + - `'id'`: The ID of the added personality in the `self.personalities` list. + - `'personality_add_failed'`: This event is emitted to the client if an exception occurs during the personality addition. The emitted data is a dictionary with the following key-value pairs: + - `'success'`: `False` to indicate failure. + - `'error'`: A string containing the error message explaining the cause of the failure. + + +#### `activate_personality` +- Event: `'activate_personality'` +- Description: This event is triggered when a client requests to activate a personality. +- Actions: + - Extracts the personality ID from the request data. + - Checks if the personality ID is valid (within the range of `self.personalities`). + - Sets the `self.active_personality` to the selected personality. + - Sends a response to the client indicating the success of the personality activation along with the name and ID of the activated personality. + - Updates the default personality ID in `self.config["active_personality_id"]`. + - Saves the updated configuration using `self.config.save_config()`. +- Event Generated: + - `'activate_personality'`: Emits the event to the client with the following data: + - `'success'`: Indicates whether the personality activation was successful (`True` or `False`). + - `'name'`: The name of the activated personality. + - `'id'`: The ID (index) of the activated personality in the `self.personalities` list. + +#### `list_active_personalities` +- Event: `'list_active_personalities'` +- Description: This event is triggered when a client requests a list of active personalities. +- Parameters: None +- Actions: + - Retrieves the names of all the active personalities from the `self.personalities` list. + - Sends a response to the client containing the list of active personality names. +- Event Generated: `'active_personalities_list'` +- Event Data: + - `'success'`: A boolean value indicating the success of the operation. + - `'personalities'`: A list of strings representing the names of the active personalities. + +Please note that the `'list_active_personalities'` event does not require any parameters when triggering the endpoint. It simply returns the list of active personalities to the client. + +#### `activate_personality` +- Event: `'activate_personality'` +- Description: This event is triggered when a client requests to activate a personality. +- Parameters: + - `data['id']` (integer): The ID of the personality to activate. +- Actions: + - Extracts the personality ID from the request data. + - Checks if the personality ID is valid by comparing it with the length of the `self.personalities` list. + - If the personality ID is valid: + - Sets the `self.active_personality` to the personality at the specified ID. + - Sends a response to the client indicating the success of the personality activation, along with the name and ID of the activated personality. + - Updates the `active_personality_id` in the `self.config` object with the activated personality's ID. + - Saves the updated configuration. + - If the personality ID is not valid: + - Sends a response to the client indicating the failure of the personality activation, along with an error message. + +Generated Events: +- `'activate_personality'`: This event is emitted to the client after successfully activating a personality. + - Parameters: + - `{'success': True, 'name': self.active_personality, 'id': len(self.personalities) - 1}`: + - `'success'` (boolean): Indicates whether the personality activation was successful. + - `'name'` (string): The name of the activated personality. + - `'id'` (integer): The ID of the activated personality. +- `'personality_add_failed'`: This event is emitted to the client if the personality ID provided is not valid. + - Parameters: + - `{'success': False, 'error': 'Personality ID not valid'}`: + - `'success'` (boolean): Indicates whether the personality activation failed. + - `'error'` (string): The error message indicating the reason for the failure. + + +#### `generate_text` +- Event: `'generate_text'` +- Description: This event is triggered when a client requests text generation. +- Parameters: + - `data`: A dictionary containing the following fields: + - `prompt` (string): The text prompt for text generation. + - `personality` (integer): The index of the selected personality for conditioning the text generation. +- Actions: + - Retrieves the selected model and client ID from the server. + - Extracts the prompt and selected personality index from the request data. + - Initializes an empty answer list for text chunks. + - Retrieves the full discussion blocks from the client's data. + - Defines a callback function to handle generated text chunks. + - Preprocesses the prompt based on the selected personality's configuration, if applicable. + - Constructs the full discussion text by combining the personality's conditioning, prompt, and AI message prefix. + - Prints the input prompt for debugging purposes. + - If a personality processor is available and has a custom workflow, runs the processor's workflow with the prompt and full discussion text, providing the callback function for text chunk emission. + - If no custom workflow is available, generates text using the selected model with the full discussion text, specifying the number of predictions. + - Appends the generated text to the full discussion blocks. + - Prints a success message for debugging purposes. + - Emits the generated text to the client through the `'text_generated'` event. + +Events generated: +- `'text_chunk'`: Generated text chunks are emitted to the client through this event during the text generation process. +- `'text_generated'`: Once the text generation process is complete, the final generated text is emitted to the client through this event. diff --git a/examples/chat_forever/console.py b/examples/chat_forever/console.py new file mode 100644 index 0000000..d9a808d --- /dev/null +++ b/examples/chat_forever/console.py @@ -0,0 +1,27 @@ +from lollms.console import Conversation + +class MyConversation(Conversation): + def __init__(self, cfg=None): + super().__init__(cfg, show_welcome_message=False) + + def start_conversation(self): + full_discussion="" + while True: + prompt = input("You: ") + if prompt=="exit": + return + if prompt=="menu": + self.menu.main_menu() + full_discussion += self.personality.user_message_prefix+prompt+self.personality.link_text + full_discussion += self.personality.ai_message_prefix + def callback(text, type=None): + print(text, end="", flush=True) + return True + print(self.personality.name+": ",end="",flush=True) + output = self.safe_generate(full_discussion, callback=callback) + full_discussion += output.strip()+self.personality.link_text + print() + +if __name__ == '__main__': + cv = MyConversation() + cv.start_conversation() \ No newline at end of file diff --git a/examples/lllm_qt_client/README.md b/examples/lllm_qt_client/README.md new file mode 100644 index 0000000..687370d --- /dev/null +++ b/examples/lllm_qt_client/README.md @@ -0,0 +1,43 @@ +# AIPersonality Server and PyQt Client + +This is a Python project that consists of a server and a PyQt client for interacting with the AIPersonality text generation model. The server is built using Flask and Flask-SocketIO, while the client is implemented using PyQt5. + +## Server + +The server code is located in the file `lllm_server.py`. It sets up a Flask application with Flask-SocketIO to establish a WebSocket connection with clients. The server receives text generation requests from clients, generates text based on the given prompt, and sends the generated text back to the clients. + +To run the server, execute the following command: + +```bash +python server.py --host localhost --port 9600 --config configs/config.yaml --bindings_path bindings_zoo +``` +You can customize the host, port, configuration file, and bindings path by providing appropriate command-line arguments. + +## Client +The client code is implemented using PyQt5 and can be found in the file client.py. It provides a graphical user interface (GUI) for interacting with the server. The client connects to the server using WebSocket and allows users to enter a prompt and generate text based on that prompt. + +To run the client, execute the following command: + +```bash +pyaipersonality-server --host 0.0.0.0 --port 9600 +``` +The client GUI will appear, and you can enter a prompt in the text area. Click the "Generate Text" button to send the prompt to the server for text generation. The generated text will be displayed in the text area. + +Make sure you have the necessary dependencies installed, such as Flask, Flask-SocketIO, Flask-CORS, pyaipersonality, and PyQt5, before running the server and client. + +## Dependencies +The project depends on the following Python packages: + +- Flask +- Flask-SocketIO +- Flask-CORS +- pyaipersonality +- PyQt5 + +You can install the dependencies using pip: +```bash +pip install flask flask-socketio flask-cors pyaipersonality pyqt5 +``` + +# License +PyAIPersonality is licensed under the Apache 2.0 license. See the `LICENSE` file for more information. diff --git a/examples/lllm_qt_client/assets/connected.svg b/examples/lllm_qt_client/assets/connected.svg new file mode 100644 index 0000000..04f24f3 --- /dev/null +++ b/examples/lllm_qt_client/assets/connected.svg @@ -0,0 +1,4 @@ + + + + diff --git a/examples/lllm_qt_client/assets/disconnected.svg b/examples/lllm_qt_client/assets/disconnected.svg new file mode 100644 index 0000000..963781b --- /dev/null +++ b/examples/lllm_qt_client/assets/disconnected.svg @@ -0,0 +1,4 @@ + + + + diff --git a/examples/lllm_qt_client/lllm_qt_client.py b/examples/lllm_qt_client/lllm_qt_client.py new file mode 100644 index 0000000..3b48590 --- /dev/null +++ b/examples/lllm_qt_client/lllm_qt_client.py @@ -0,0 +1,184 @@ +import sys +from PyQt5.QtGui import QIcon +from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot +from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit,QHBoxLayout, QLineEdit, QVBoxLayout, QWidget, QToolBar, QAction, QPushButton, QStatusBar, QComboBox +from PyQt5.QtSvg import QSvgWidget +from socketio.client import Client +from socketio.exceptions import ConnectionError +from pathlib import Path + +class ServerConnector(QObject): + text_chunk_received = pyqtSignal(str) + text_generated = pyqtSignal(str) + connection_failed = pyqtSignal() + connection_status_changed = pyqtSignal(bool) + personalities_received = pyqtSignal(list) + + def __init__(self, parent=None): + super(ServerConnector, self).__init__(parent) + self.socketio = Client() + self.connected = False + self.personalities = [] + self.selected_personality_id = 0 + + self.socketio.on('connect', self.handle_connect) + self.socketio.on('text_chunk', self.handle_text_chunk) + self.socketio.on('text_generated', self.handle_text_generated) + self.socketio.on('active_personalities_list', self.handle_personalities_received) + + def handle_connect(self): + self.socketio.emit('connect') + self.list_personalities() + + + def connect_to_server(self): + if not self.connected: + try: + self.socketio.connect('http://localhost:9600') + self.connected = True + self.connection_status_changed.emit(True) + except ConnectionError: + self.connection_failed.emit() + self.connection_status_changed.emit(False) + + def disconnect_from_server(self): + if self.connected: + self.socketio.disconnect() + self.connected = False + self.connection_status_changed.emit(False) + + def list_personalities(self): + self.socketio.emit('list_active_personalities') + + @pyqtSlot(str) + def generate_text(self, prompt): + if not self.connected: + self.connection_failed.emit() + return + + data = { + 'client_id': self.socketio.sid, + 'prompt': prompt, + 'personality': self.selected_personality_id + } + self.socketio.emit('generate_text', data) + + def handle_personalities_list(self, data): + personalities = data['personalities'] + self.personalities_list_received.emit(personalities) + + + def handle_text_chunk(self, data): + chunk = data['chunk'] + self.text_chunk_received.emit(chunk) + + def handle_text_generated(self, data): + text = data['text'] + self.text_generated.emit(text) + + def handle_personalities_received(self, data): + personalities = data['personalities'] + print(f"Received List of personalities:{personalities}") + self.personalities = personalities + self.personalities_received.emit(personalities) + +class MainWindow(QMainWindow): + def __init__(self, parent=None): + super(MainWindow, self).__init__(parent) + self.setWindowTitle("AIPersonality Client") + + self.user_input_layout = QHBoxLayout() + self.user_text = QLineEdit() + self.text_edit = QTextEdit() + self.toolbar = QToolBar() + self.submit_button = QPushButton("Submit") + self.user_input_layout.addWidget(self.user_text) + self.user_input_layout.addWidget(self.submit_button) + + self.statusbar = QStatusBar() + self.personality_combo_box = QComboBox() + self.personality_combo_box.setMinimumWidth(500) + + self.connect_action = QAction(QIcon(str(Path(__file__).parent/'assets/connected.svg')), "", self) + self.connect_action.setCheckable(True) + self.connect_action.toggled.connect(self.toggle_connection) + + self.toolbar.addAction(self.connect_action) + self.toolbar.addWidget(self.personality_combo_box) + self.addToolBar(self.toolbar) + + layout = QVBoxLayout() + layout.addLayout(self.user_input_layout) + layout.addWidget(self.text_edit) + + widget = QWidget() + widget.setLayout(layout) + self.setCentralWidget(widget) + + self.connector = ServerConnector() + self.connector.text_chunk_received.connect(self.handle_text_chunk) + self.connector.text_generated.connect(self.handle_text_generated) + self.connector.connection_failed.connect(self.handle_connection_failed) + self.connector.connection_status_changed.connect(self.handle_connection_status_changed) + self.connector.personalities_received.connect(self.handle_personalities_received) + self.connector.connect_to_server() + + self.submit_button.clicked.connect(self.submit_text) + + self.setStatusBar(self.statusbar) + self.update_statusbar() + + @pyqtSlot(bool) + def toggle_connection(self, checked): + if checked: + self.connector.connect_to_server() + self.connect_action.setIcon(QIcon(str(Path(__file__).parent/'assets/connected.svg'))) + else: + self.connector.disconnect_from_server() + self.connect_action.setIcon(QIcon(str(Path(__file__).parent/'assets/disconnected.svg'))) + + @pyqtSlot() + def submit_text(self): + prompt = self.user_text.text() + self.selected_personality_id = self.personality_combo_box.currentIndex() + self.text_edit.insertPlainText("User:"+prompt+"\n"+self.connector.personalities[self.selected_personality_id]+":") + self.connector.generate_text(prompt) + + @pyqtSlot(str) + def handle_text_chunk(self, chunk): + self.text_edit.insertPlainText(chunk) + + @pyqtSlot(str) + def handle_text_generated(self, text): + self.text_edit.append(text) + + @pyqtSlot() + def handle_connection_failed(self): + self.text_edit.append("Failed to connect to the server.") + + @pyqtSlot(bool) + def handle_connection_status_changed(self, connected): + if connected: + self.statusbar.showMessage("Connected to the server") + else: + self.statusbar.showMessage("Disconnected from the server") + + @pyqtSlot(list) + def handle_personalities_received(self, personalities): + print("Received personalities") + self.personality_combo_box.clear() + self.personality_combo_box.addItems(personalities) + + def update_statusbar(self): + if self.connector.connected: + self.statusbar.showMessage("Connected to the server") + self.connect_action.setIcon(QIcon(str(Path(__file__).parent/'assets/connected.svg'))) + else: + self.statusbar.showMessage("Disconnected from the server") + self.connect_action.setIcon(QIcon(str(Path(__file__).parent/'assets/disconnected.svg'))) + +if __name__ == '__main__': + app = QApplication(sys.argv) + window = MainWindow() + window.show() + sys.exit(app.exec_()) diff --git a/examples/lllm_qt_client/requirements.txt b/examples/lllm_qt_client/requirements.txt new file mode 100644 index 0000000..46ab3f8 --- /dev/null +++ b/examples/lllm_qt_client/requirements.txt @@ -0,0 +1,3 @@ +Flask_SocketIO==5.3.4 +PyQt5==5.15.9 +python-socketio[client] diff --git a/examples/simple_story/console.py b/examples/simple_story/console.py new file mode 100644 index 0000000..389f775 --- /dev/null +++ b/examples/simple_story/console.py @@ -0,0 +1,17 @@ +from lollms.console import Conversation + +class MyConversation(Conversation): + def __init__(self, cfg=None): + super().__init__(cfg, show_welcome_message=False) + + def start_conversation(self): + prompt = "Once apon a time" + def callback(text, type=None): + print(text, end="", flush=True) + return True + print(prompt, end="", flush=True) + output = self.safe_generate(prompt, callback=callback) + +if __name__ == '__main__': + cv = MyConversation() + cv.start_conversation() \ No newline at end of file diff --git a/examples/vujs_web_ui/lollms_webui/.gitignore b/examples/vujs_web_ui/lollms_webui/.gitignore new file mode 100644 index 0000000..403adbc --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +/dist + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/examples/vujs_web_ui/lollms_webui/README.md b/examples/vujs_web_ui/lollms_webui/README.md new file mode 100644 index 0000000..e4f1959 --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/README.md @@ -0,0 +1,24 @@ +# lollms_webui + +## Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Lints and fixes files +``` +npm run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/examples/vujs_web_ui/lollms_webui/babel.config.js b/examples/vujs_web_ui/lollms_webui/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/examples/vujs_web_ui/lollms_webui/jsconfig.json b/examples/vujs_web_ui/lollms_webui/jsconfig.json new file mode 100644 index 0000000..4aafc5f --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/jsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "esnext", + "baseUrl": "./", + "moduleResolution": "node", + "paths": { + "@/*": [ + "src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + } +} diff --git a/examples/vujs_web_ui/lollms_webui/package-lock.json b/examples/vujs_web_ui/lollms_webui/package-lock.json new file mode 100644 index 0000000..5f119ad --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/package-lock.json @@ -0,0 +1,11920 @@ +{ + "name": "lollms_webui", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "lollms_webui", + "version": "0.1.0", + "dependencies": { + "core-js": "^3.8.3", + "socket.io-client": "^4.6.2", + "tailwindcss": "^3.3.2", + "vue": "^3.2.13" + }, + "devDependencies": { + "@babel/core": "^7.12.16", + "@babel/eslint-parser": "^7.12.16", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "eslint": "^7.32.0", + "eslint-plugin-vue": "^8.0.3" + } + }, + "node_modules/@achrinza/node-ipc": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/@achrinza/node-ipc/-/node-ipc-9.2.6.tgz", + "integrity": "sha512-ULSIYPy4ZPM301dfCxRz0l2GJjOwIo/PqmWonIu1bLml7UmnVQmH+juJcoyXp6E8gIRRNAjGYftJnNQlfy4vPg==", + "dev": true, + "dependencies": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + }, + "engines": { + "node": "8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19" + } + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.3.tgz", + "integrity": "sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz", + "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.22.0", + "@babel/helper-compilation-targets": "^7.22.1", + "@babel/helper-module-transforms": "^7.22.1", + "@babel/helpers": "^7.22.0", + "@babel/parser": "^7.22.0", + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.21.8.tgz", + "integrity": "sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.3.tgz", + "integrity": "sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.3.tgz", + "integrity": "sha512-ahEoxgqNoYXm0k22TvOke48i1PkavGu0qGCmcq9ugi6gnmvKNaMjKBSrZTnWUi1CFEeNAUiVba0Wtzm03aSkJg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz", + "integrity": "sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.0", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.1.tgz", + "integrity": "sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.22.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.22.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.1.tgz", + "integrity": "sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.3.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz", + "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz", + "integrity": "sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.3.tgz", + "integrity": "sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz", + "integrity": "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-simple-access": "^7.21.5", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", + "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.1.tgz", + "integrity": "sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-member-expression-to-functions": "^7.22.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", + "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", + "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz", + "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz", + "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "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.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.3.tgz", + "integrity": "sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-transform-optional-chaining": "^7.22.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.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==", + "dev": true, + "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.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.3.tgz", + "integrity": "sha512-XjTKH3sHr6pPqG+hR1NCdVupwiosfdKM2oSMyKQVQ5Bym9l/p7BuLAqT5U32zZzRCfPq/TPRPzMiiTE9bOXU4w==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/helper-replace-supers": "^7.22.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/plugin-syntax-decorators": "^7.22.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.10.tgz", + "integrity": "sha512-3YybmT8FN4sZFXp0kTr9Gbu90wAIhC3feNung+qcRQ1wALGoSHgOz1c+fR3ZLGZ0LXqIpYmtE6Faua6tMDarUg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@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-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.3.tgz", + "integrity": "sha512-R16Zuge73+8/nLcDjkIpyhi5wIbN7i7fiuLJR8yQX7vPAa/ltUKtd3iLbb4AgP5nrLi91HnNUNosELIGUGH1bg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5" + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.3.tgz", + "integrity": "sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5" + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", + "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-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==", + "dev": true, + "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.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz", + "integrity": "sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.3.tgz", + "integrity": "sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@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.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", + "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.3.tgz", + "integrity": "sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.3.tgz", + "integrity": "sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5", + "@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.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", + "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", + "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.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz", + "integrity": "sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/template": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", + "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "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-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.1.tgz", + "integrity": "sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "@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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^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-transform-export-namespace-from": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.3.tgz", + "integrity": "sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "@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-for-of": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz", + "integrity": "sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.3.tgz", + "integrity": "sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "@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.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.3.tgz", + "integrity": "sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "@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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz", + "integrity": "sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.21.5", + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/helper-simple-access": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.3.tgz", + "integrity": "sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^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-transform-named-capturing-groups-regex": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.3.tgz", + "integrity": "sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.3.tgz", + "integrity": "sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.3.tgz", + "integrity": "sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "@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.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.3.tgz", + "integrity": "sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "@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.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.3.tgz", + "integrity": "sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.3", + "@babel/helper-compilation-targets": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.3.tgz", + "integrity": "sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "@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.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.3.tgz", + "integrity": "sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "@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-transform-parameters": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.3.tgz", + "integrity": "sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.3.tgz", + "integrity": "sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.3.tgz", + "integrity": "sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5", + "@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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz", + "integrity": "sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.4.tgz", + "integrity": "sha512-Urkiz1m4zqiRo17klj+l3nXgiRTFQng91Bc1eiLF7BMQu1e7wE5Gcq9xSv062IF068NHjcutSbIMev60gXxAvA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-plugin-utils": "^7.21.5", + "babel-plugin-polyfill-corejs2": "^0.4.3", + "babel-plugin-polyfill-corejs3": "^0.8.1", + "babel-plugin-polyfill-regenerator": "^0.5.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz", + "integrity": "sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.3.tgz", + "integrity": "sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "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-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.3.tgz", + "integrity": "sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.4.tgz", + "integrity": "sha512-c3lHOjbwBv0TkhYCr+XCR6wKcSZ1QbQTVdSkZUaVpLv8CVWotBMArWUi5UAJrcrQaEnleVkkvaV8F/pmc/STZQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.3", + "@babel/helper-compilation-targets": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.3", + "@babel/plugin-proposal-private-property-in-object": "^7.21.0", + "@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.20.0", + "@babel/plugin-syntax-import-attributes": "^7.22.3", + "@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.21.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.3", + "@babel/plugin-transform-async-to-generator": "^7.20.7", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.21.0", + "@babel/plugin-transform-class-properties": "^7.22.3", + "@babel/plugin-transform-class-static-block": "^7.22.3", + "@babel/plugin-transform-classes": "^7.21.0", + "@babel/plugin-transform-computed-properties": "^7.21.5", + "@babel/plugin-transform-destructuring": "^7.21.3", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-dynamic-import": "^7.22.1", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-export-namespace-from": "^7.22.3", + "@babel/plugin-transform-for-of": "^7.21.5", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-json-strings": "^7.22.3", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.3", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.20.11", + "@babel/plugin-transform-modules-commonjs": "^7.21.5", + "@babel/plugin-transform-modules-systemjs": "^7.22.3", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.3", + "@babel/plugin-transform-new-target": "^7.22.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.3", + "@babel/plugin-transform-numeric-separator": "^7.22.3", + "@babel/plugin-transform-object-rest-spread": "^7.22.3", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-optional-catch-binding": "^7.22.3", + "@babel/plugin-transform-optional-chaining": "^7.22.3", + "@babel/plugin-transform-parameters": "^7.22.3", + "@babel/plugin-transform-private-methods": "^7.22.3", + "@babel/plugin-transform-private-property-in-object": "^7.22.3", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.21.5", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.20.7", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.21.5", + "@babel/plugin-transform-unicode-property-regex": "^7.22.3", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.3", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.22.4", + "babel-plugin-polyfill-corejs2": "^0.4.3", + "babel-plugin-polyfill-corejs3": "^0.8.1", + "babel-plugin-polyfill-regenerator": "^0.5.0", + "core-js-compat": "^3.30.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "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==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz", + "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz", + "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/parser": "^7.21.9", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.4.tgz", + "integrity": "sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.22.3", + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.22.4", + "@babel/types": "^7.22.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.4.tgz", + "integrity": "sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "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==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "dev": true, + "dependencies": { + "easy-stack": "1.0.1" + }, + "engines": { + "node": ">=1.0.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==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, + "node_modules/@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@soda/friendly-errors-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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@soda/friendly-errors-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==", + "dev": true + }, + "node_modules/@soda/friendly-errors-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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "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.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "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==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.2.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz", + "integrity": "sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", + "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", + "dev": true + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", + "dev": true + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", + "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", + "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/babel-preset-app": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-5.0.8.tgz", + "integrity": "sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.16", + "@babel/helper-compilation-targets": "^7.12.16", + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-proposal-decorators": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/plugin-transform-runtime": "^7.12.15", + "@babel/preset-env": "^7.12.16", + "@babel/runtime": "^7.12.13", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.8.3", + "core-js-compat": "^3.8.3", + "semver": "^7.3.4" + }, + "peerDependencies": { + "@babel/core": "*", + "core-js": "^3", + "vue": "^2 || ^3.2.13" + }, + "peerDependenciesMeta": { + "core-js": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-preset-app/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/babel-preset-app/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/babel-preset-app/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@vue/babel-preset-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", + "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", + "dev": true, + "dependencies": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", + "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", + "@vue/babel-sugar-functional-vue": "^1.4.0", + "@vue/babel-sugar-inject-h": "^1.4.0", + "@vue/babel-sugar-v-model": "^1.4.0", + "@vue/babel-sugar-v-on": "^1.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "vue": "*" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-sugar-composition-api-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", + "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-render-instance": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", + "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-functional-vue": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", + "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", + "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", + "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/babel-sugar-v-on": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", + "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-overlay": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-5.0.8.tgz", + "integrity": "sha512-KmtievE/B4kcXp6SuM2gzsnSd8WebkQpg3XaB6GmFh1BJGRqa1UiW9up7L/Q67uOdTigHxr5Ar2lZms4RcDjwQ==", + "dev": true + }, + "node_modules/@vue/cli-plugin-babel": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.8.tgz", + "integrity": "sha512-a4qqkml3FAJ3auqB2kN2EMPocb/iu0ykeELwed+9B1c1nQ1HKgslKMHMPavYx3Cd/QAx2mBD4hwKBqZXEI/CsQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.16", + "@vue/babel-preset-app": "^5.0.8", + "@vue/cli-shared-utils": "^5.0.8", + "babel-loader": "^8.2.2", + "thread-loader": "^3.0.0", + "webpack": "^5.54.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-eslint": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.8.tgz", + "integrity": "sha512-d11+I5ONYaAPW1KyZj9GlrV/E6HZePq5L5eAF5GgoVdu6sxr6bDgEoxzhcS1Pk2eh8rn1MxG/FyyR+eCBj/CNg==", + "dev": true, + "dependencies": { + "@vue/cli-shared-utils": "^5.0.8", + "eslint-webpack-plugin": "^3.1.0", + "globby": "^11.0.2", + "webpack": "^5.54.0", + "yorkie": "^2.0.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0", + "eslint": ">=7.5.0" + } + }, + "node_modules/@vue/cli-plugin-router": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-5.0.8.tgz", + "integrity": "sha512-Gmv4dsGdAsWPqVijz3Ux2OS2HkMrWi1ENj2cYL75nUeL+Xj5HEstSqdtfZ0b1q9NCce+BFB6QnHfTBXc/fCvMg==", + "dev": true, + "dependencies": { + "@vue/cli-shared-utils": "^5.0.8" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-vuex": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.8.tgz", + "integrity": "sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA==", + "dev": true, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-service": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-5.0.8.tgz", + "integrity": "sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.12.16", + "@soda/friendly-errors-webpack-plugin": "^1.8.0", + "@soda/get-current-script": "^1.0.2", + "@types/minimist": "^1.2.0", + "@vue/cli-overlay": "^5.0.8", + "@vue/cli-plugin-router": "^5.0.8", + "@vue/cli-plugin-vuex": "^5.0.8", + "@vue/cli-shared-utils": "^5.0.8", + "@vue/component-compiler-utils": "^3.3.0", + "@vue/vue-loader-v15": "npm:vue-loader@^15.9.7", + "@vue/web-component-wrapper": "^1.3.0", + "acorn": "^8.0.5", + "acorn-walk": "^8.0.2", + "address": "^1.1.2", + "autoprefixer": "^10.2.4", + "browserslist": "^4.16.3", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.10", + "clipboardy": "^2.3.0", + "cliui": "^7.0.4", + "copy-webpack-plugin": "^9.0.1", + "css-loader": "^6.5.0", + "css-minimizer-webpack-plugin": "^3.0.2", + "cssnano": "^5.0.0", + "debug": "^4.1.1", + "default-gateway": "^6.0.3", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^5.1.0", + "is-file-esm": "^1.0.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "mini-css-extract-plugin": "^2.5.3", + "minimist": "^1.2.5", + "module-alias": "^2.2.2", + "portfinder": "^1.0.26", + "postcss": "^8.2.6", + "postcss-loader": "^6.1.1", + "progress-webpack-plugin": "^1.0.12", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^5.1.1", + "thread-loader": "^3.0.0", + "vue-loader": "^17.0.0", + "vue-style-loader": "^4.1.3", + "webpack": "^5.54.0", + "webpack-bundle-analyzer": "^4.4.0", + "webpack-chain": "^6.5.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.7.3", + "webpack-virtual-modules": "^0.4.2", + "whatwg-fetch": "^3.6.2" + }, + "bin": { + "vue-cli-service": "bin/vue-cli-service.js" + }, + "engines": { + "node": "^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "vue-template-compiler": "^2.0.0", + "webpack-sources": "*" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "less-loader": { + "optional": true + }, + "pug-plain-loader": { + "optional": true + }, + "raw-loader": { + "optional": true + }, + "sass-loader": { + "optional": true + }, + "stylus-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/@vue/cli-shared-utils": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-5.0.8.tgz", + "integrity": "sha512-uK2YB7bBVuQhjOJF+O52P9yFMXeJVj7ozqJkwYE9PlMHL1LMHjtCYm4cSdOebuPzyP+/9p0BimM/OqxsevIopQ==", + "dev": true, + "dependencies": { + "@achrinza/node-ipc": "^9.2.5", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@vue/cli-shared-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", + "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "dependencies": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", + "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "dependencies": { + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", + "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-ssr": "3.3.4", + "@vue/reactivity-transform": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", + "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/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==", + "dev": true, + "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/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/@vue/reactivity": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", + "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "dependencies": { + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", + "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", + "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "dependencies": { + "@vue/reactivity": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", + "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "dependencies": { + "@vue/runtime-core": "3.3.4", + "@vue/shared": "3.3.4", + "csstype": "^3.1.1" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", + "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "dependencies": { + "@vue/compiler-ssr": "3.3.4", + "@vue/shared": "3.3.4" + }, + "peerDependencies": { + "vue": "3.3.4" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", + "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" + }, + "node_modules/@vue/vue-loader-v15": { + "name": "vue-loader", + "version": "15.10.1", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz", + "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==", + "dev": true, + "dependencies": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/@vue/vue-loader-v15/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "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/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@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.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@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==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "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==" + }, + "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==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "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/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==", + "dev": true, + "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/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==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz", + "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.4.0", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz", + "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.0", + "core-js-compat": "^3.30.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz", + "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "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.1", + "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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "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==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", + "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", + "dev": true, + "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" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001489", + "electron-to-chromium": "^1.4.411", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "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==", + "dev": true, + "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.30001494", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001494.tgz", + "integrity": "sha512-sY2B5Qyl46ZzfYDegrl8GBCzdawSLT4ThM9b9F+aDYUrAG2zCOyMbd2Tq34mS1g4ZKBfjRlzOohQMxx28x6wJg==", + "dev": true, + "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" + } + ] + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cli-highlight/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", + "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/core-js": { + "version": "3.30.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.2.tgz", + "integrity": "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.30.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.2.tgz", + "integrity": "sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.5" + }, + "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==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "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": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz", + "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "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/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", + "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "dev": true, + "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/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "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-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.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==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "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==", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/default-gateway/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "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==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.419", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.419.tgz", + "integrity": "sha512-jdie3RiEgygvDTyS2sgjq71B36q2cDSBfPlwzUyuOrfYTNoYWyBxxjGJV/HAu3A2hB0Y+HesvCVkVAFoCKwCSw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz", + "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.11.0", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "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/engine.io-parser": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.7.tgz", + "integrity": "sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", + "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", + "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", + "dev": true, + "dependencies": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^8.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-plugin-vue/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-vue/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-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==", + "dev": true, + "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/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/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==", + "dev": true, + "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==", + "dev": true, + "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/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", + "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "dev": true, + "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/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.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/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true, + "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/fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "dev": true + }, + "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==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "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==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "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==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "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==", + "dev": true, + "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-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.1.tgz", + "integrity": "sha512-cTUzZ1+NqjGEKjmVgZKLMdiFg3m9MdRXkZW2OEe69WYVi5ONLMmlnSZdXzGGMOq0C8jGDrL6EWyEDDUioHO/pA==", + "dev": true, + "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": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-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==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "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==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "dependencies": { + "ci-info": "^1.5.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-file-esm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-file-esm/-/is-file-esm-1.0.0.tgz", + "integrity": "sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==", + "dev": true, + "dependencies": { + "read-pkg-up": "^7.0.1" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", + "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.9.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz", + "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/launch-editor-middleware": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.6.0.tgz", + "integrity": "sha512-K2yxgljj5TdCeRN1lBtO3/J26+AIDDDw+04y6VAiZbWcTdBwsYN6RrZBnW5DN/QiSIdKNjKdATLUUluWWFYTIA==", + "dev": true, + "dependencies": { + "launch-editor": "^2.6.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "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==" + }, + "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==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.2.tgz", + "integrity": "sha512-4kbWXbVZ+LU4XFDS2CuA7frnwz2HxCMB/0yOXc86q7aCQrfWKkL11t6al1e2CsVC7uhnBNTQ1TfUsAxVauO9IQ==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", + "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "dev": true, + "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/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/module-alias": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.3.tgz", + "integrity": "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==", + "dev": true + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "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==", + "dev": true, + "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==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "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==", + "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==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "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==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/postcss": { + "version": "8.4.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", + "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", + "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" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.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==", + "dev": true, + "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==", + "dev": true, + "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-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "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/yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "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==", + "dev": true, + "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-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-loader/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "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.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "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==", + "dev": true, + "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==", + "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-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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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==", + "dev": true, + "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-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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "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==", + "dev": true, + "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-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==", + "dev": true, + "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==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "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==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/progress-webpack-plugin": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz", + "integrity": "sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA==", + "dev": true, + "dependencies": { + "chalk": "^2.1.0", + "figures": "^2.0.0", + "log-update": "^2.3.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "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/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-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==", + "dev": true, + "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==", + "dev": true, + "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/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "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==", + "dev": true + }, + "node_modules/sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/socket.io-client": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.2.tgz", + "integrity": "sha512-OwWrMbbA8wSqhBAR0yoPK6EdQLERQAYjXb3A0zLpgxfM1ZGLKoxHx8gVmCHA6pcclRX5oA/zvQf7bghAS11jRA==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.4.0", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "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", + "dev": true + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dev": true, + "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.32.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", + "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "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": ">=8" + } + }, + "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==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "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==", + "dev": true, + "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/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==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/tailwindcss": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", + "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==", + "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.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.18.2", + "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", + "postcss-value-parser": "^4.2.0", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.17.7", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", + "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", + "dev": true, + "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.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "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.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "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==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-loader": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-3.0.4.tgz", + "integrity": "sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==", + "dev": true, + "dependencies": { + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.1.0", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "node_modules/thread-loader/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==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/thread-loader/node_modules/schema-utils": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "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==" + }, + "node_modules/tslib": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "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" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "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==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vue": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", + "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-sfc": "3.3.4", + "@vue/runtime-dom": "3.3.4", + "@vue/server-renderer": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/vue-eslint-parser": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", + "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "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/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.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/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-eslint-parser/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-eslint-parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "node_modules/vue-loader": { + "version": "17.2.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.2.2.tgz", + "integrity": "sha512-aqNvKJvnz2A/6VWeJZodAo8XLoAlVwBv+2Z6dama+LHsAF+P/xijQ+OfWrxIs0wcGSJduvdzvTuATzXbNKkpiw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "watchpack": "^2.4.0" + }, + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/vue-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/vue-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/vue-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vue-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/vue-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/webpack": { + "version": "5.85.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.85.0.tgz", + "integrity": "sha512-7gazTiYqwo5OSqwH1tigLDL2r3qDeP2dOKYgd+LlXpsUMqDTklg6tOghexqky0/+6QY38kb/R/uRPUleuL43zg==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.14.1", + "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.9", + "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.1.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "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-bundle-analyzer": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz", + "integrity": "sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "dev": true, + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "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-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", + "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "dev": true, + "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/webpack-dev-server": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.0.tgz", + "integrity": "sha512-HmNB5QeSl1KpulTBQ8UT4FPrByYyaLxpJoQ0+s7EvUrMc16m0ZS1sgb1XGqzmgCPk0c9y+aaXxn11tbLzuM7NQ==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "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.1", + "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/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", + "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "dev": true, + "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/webpack-dev-server/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", + "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/yorkie/node_modules/execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/yorkie/node_modules/normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yorkie/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } +} diff --git a/examples/vujs_web_ui/lollms_webui/package.json b/examples/vujs_web_ui/lollms_webui/package.json new file mode 100644 index 0000000..d814e97 --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/package.json @@ -0,0 +1,45 @@ +{ + "name": "lollms_webui", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "core-js": "^3.8.3", + "socket.io-client": "^4.6.2", + "tailwindcss": "^3.3.2", + "vue": "^3.2.13" + }, + "devDependencies": { + "@babel/core": "^7.12.16", + "@babel/eslint-parser": "^7.12.16", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "eslint": "^7.32.0", + "eslint-plugin-vue": "^8.0.3" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/vue3-essential", + "eslint:recommended" + ], + "parserOptions": { + "parser": "@babel/eslint-parser" + }, + "rules": {} + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead", + "not ie 11" + ] +} diff --git a/examples/vujs_web_ui/lollms_webui/public/favicon.ico b/examples/vujs_web_ui/lollms_webui/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/examples/vujs_web_ui/lollms_webui/public/index.html b/examples/vujs_web_ui/lollms_webui/public/index.html new file mode 100644 index 0000000..3e5a139 --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/public/index.html @@ -0,0 +1,17 @@ + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +
+ + + diff --git a/examples/vujs_web_ui/lollms_webui/src/App.vue b/examples/vujs_web_ui/lollms_webui/src/App.vue new file mode 100644 index 0000000..c25b6e4 --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/src/App.vue @@ -0,0 +1,124 @@ + + + + diff --git a/examples/vujs_web_ui/lollms_webui/src/assets/css/app.css b/examples/vujs_web_ui/lollms_webui/src/assets/css/app.css new file mode 100644 index 0000000..5be59b4 --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/src/assets/css/app.css @@ -0,0 +1,3 @@ +@import 'tailwindcss/base'; +@import 'tailwindcss/components'; +@import 'tailwindcss/utilities'; \ No newline at end of file diff --git a/examples/vujs_web_ui/lollms_webui/src/assets/css/tailwind.css b/examples/vujs_web_ui/lollms_webui/src/assets/css/tailwind.css new file mode 100644 index 0000000..a31e444 --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/src/assets/css/tailwind.css @@ -0,0 +1,3 @@ +@import 'tailwindcss/base'; +@import 'tailwindcss/components'; +@import 'tailwindcss/utilities'; diff --git a/examples/vujs_web_ui/lollms_webui/src/assets/logo.png b/examples/vujs_web_ui/lollms_webui/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 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 +
+

{{ msg }}

+

+ For a guide and recipes on how to configure / customize this project,
+ check out the + vue-cli documentation. +

+

Installed CLI Plugins

+ +

Essential Links

+ +

Ecosystem

+ +
+ + + + + + diff --git a/examples/vujs_web_ui/lollms_webui/src/main.js b/examples/vujs_web_ui/lollms_webui/src/main.js new file mode 100644 index 0000000..c62209f --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/src/main.js @@ -0,0 +1,6 @@ +import { createApp } from 'vue' +import App from './App.vue' +import '@/assets/css/app.css'; +import './assets/css/tailwind.css'; + +createApp(App).mount('#app') diff --git a/examples/vujs_web_ui/lollms_webui/tailwind.config.js b/examples/vujs_web_ui/lollms_webui/tailwind.config.js new file mode 100644 index 0000000..6cb8507 --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/tailwind.config.js @@ -0,0 +1,14 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + purge: [ + './src/**/*.vue', + './src/**/*.html', + // Add any other paths to your Vue components and templates here + ], + content: [], + theme: { + extend: {}, + }, + plugins: [], +} + diff --git a/examples/vujs_web_ui/lollms_webui/vue.config.js b/examples/vujs_web_ui/lollms_webui/vue.config.js new file mode 100644 index 0000000..76c5241 --- /dev/null +++ b/examples/vujs_web_ui/lollms_webui/vue.config.js @@ -0,0 +1,12 @@ +const { defineConfig } = require('@vue/cli-service') +module.exports = defineConfig({ + transpileDependencies: true, + css: { + loaderOptions: { + css: { + // Import the tailwind.css file + import: 'assets/css/tailwind.css' + } + } + } +}) diff --git a/lollms/__init__.py b/lollms/__init__.py new file mode 100644 index 0000000..c4049e1 --- /dev/null +++ b/lollms/__init__.py @@ -0,0 +1,70 @@ + + +__author__ = "ParisNeo" +__github__ = "https://github.com/ParisNeo/lollms" +__copyright__ = "Copyright 2023, " +__license__ = "Apache 2.0" + + +from lollms.binding import LLMBinding, LOLLMSConfig +from lollms.personality import AIPersonality, MSG_TYPE +from lollms.paths import LollmsPaths +#from lollms.binding import LLMBinding +import importlib +from pathlib import Path + + +class BindingBuilder: + def build_binding(self, bindings_path: Path, cfg: LOLLMSConfig, force_reinstall=False)->LLMBinding: + binding_path = Path(bindings_path) / cfg["binding_name"] + # first find out if there is a requirements.txt file + install_file_name = "install.py" + install_script_path = binding_path / install_file_name + if install_script_path.exists(): + module_name = install_file_name[:-3] # Remove the ".py" extension + module_spec = importlib.util.spec_from_file_location(module_name, str(install_script_path)) + module = importlib.util.module_from_spec(module_spec) + module_spec.loader.exec_module(module) + if hasattr(module, "Install"): + module.Install(cfg, force_reinstall=force_reinstall) + # define the full absolute path to the module + absolute_path = binding_path.resolve() + # infer the module name from the file path + module_name = binding_path.stem + # use importlib to load the module from the file path + loader = importlib.machinery.SourceFileLoader(module_name, str(absolute_path / "__init__.py")) + binding_module = loader.load_module() + binding_class = getattr(binding_module, binding_module.binding_name) + return binding_class + + +class ModelBuilder: + def __init__(self, binding_class:LLMBinding, config:LOLLMSConfig): + self.binding_class = binding_class + self.model = None + self.build_model(config) + + def build_model(self, cfg: LOLLMSConfig): + self.model = self.binding_class(cfg) + + def get_model(self): + return self.model + + +class PersonalityBuilder: + def __init__(self, lollms_paths:LollmsPaths, config:LOLLMSConfig, model:LLMBinding): + self.config = config + self.lollms_paths = lollms_paths + self.model = model + + + def build_personality(self, force_reinstall=False): + if len(self.config["personalities"][self.config["active_personality_id"]].split("/"))==3: + self.personality = AIPersonality(self.lollms_paths, self.lollms_paths.personalities_zoo_path / self.config["personalities"][self.config["active_personality_id"]], self.model, force_reinstall= force_reinstall) + else: + self.personality = AIPersonality(self.lollms_paths, self.config["personalities"][self.config["active_personality_id"]], self.model, is_relative_path=False, force_reinstall= force_reinstall) + return self.personality + + def get_personality(self): + return self.personality + diff --git a/lollms/assets/logo.png b/lollms/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4ffb47c8d079a0d557ff8ed1c566f416411f4f06 GIT binary patch literal 470378 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 SlDJTtUr(qXD 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 lshK5YKhz$+8-e)}pB@-!^6ive0>}Uhu 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 }?iku^p?rSab-^=13X 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

QZDU#)t=5GqlvH2xyTP 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 literal 0 HcmV?d00001 diff --git a/lollms/binding.py b/lollms/binding.py new file mode 100644 index 0000000..0f60dcb --- /dev/null +++ b/lollms/binding.py @@ -0,0 +1,293 @@ +###### +# Project : GPT4ALL-UI +# File : binding.py +# Author : ParisNeo with the help of the community +# Supported by Nomic-AI +# license : Apache 2.0 +# Description : +# This is an interface class for GPT4All-ui bindings. +###### +from pathlib import Path +from typing import Callable +from lollms.helpers import BaseConfig, ASCIIColors +from lollms.paths import LollmsPaths + +import inspect +import yaml +import sys +from tqdm import tqdm +import urllib.request +import importlib +import shutil + + +__author__ = "parisneo" +__github__ = "https://github.com/ParisNeo/lollms_bindings_zoo" +__copyright__ = "Copyright 2023, " +__license__ = "Apache 2.0" + + +import yaml + +DEFAULT_CONFIG = { + # =================== Lord Of Large Language Models Configuration file =========================== + "version": 5, + "binding_name": "llama_cpp_official", + "model_name": "Wizard-Vicuna-7B-Uncensored.ggmlv3.q4_0.bin", + + # Host information + "host": "localhost", + "port": 9600, + + # Genreration parameters + "seed": -1, + "n_predict": 1024, + "ctx_size": 2048, + "temperature": 0.9, + "top_k": 50, + "top_p": 0.95, + "repeat_last_n": 40, + "repeat_penalty": 1.2, + + "n_threads": 8, + + #Personality parameters + "personalities": ["english/generic/lollms"], + "active_personality_id": 0, + "override_personality_model_parameters": False, #if true the personality parameters are overriden by those of the configuration (may affect personality behaviour) + + "user_name": "user", + +} + + +class LOLLMSConfig(BaseConfig): + def __init__(self, file_path=None, lollms_paths:LollmsPaths = None): + super().__init__(["file_path", "config", "lollms_paths"]) + + if file_path: + self.file_path = Path(file_path) + else: + self.file_path = None + + if file_path is not None: + self.load_config(file_path) + else: + self.config = DEFAULT_CONFIG.copy() + + if lollms_paths is None: + self.lollms_paths = LollmsPaths() + else: + self.lollms_paths = lollms_paths + + @staticmethod + def autoload(lollms_paths, config_path:str=None): + # Configuration loading part + original_cfg_path = lollms_paths.default_cfg_path + if config_path is None: + local = lollms_paths.personal_configuration_path / "local_config.yaml" + if not local.exists(): + shutil.copy(original_cfg_path, local) + cfg_path = local + else: + cfg_path = config_path + + if cfg_path.exists(): + original_config = LOLLMSConfig(original_cfg_path,lollms_paths) + config = LOLLMSConfig(cfg_path,lollms_paths) + if "version" not in config or int(config["version"]) None: + self.config = config + + +class LLMBinding: + + file_extension='*.bin' + binding_path = Path(__file__).parent + def __init__(self, config:LOLLMSConfig, inline:bool) -> None: + self.config = config + self.inline = inline + + def load_config_file(self, path): + """ + Load the content of local_config.yaml file. + + The function reads the content of the local_config.yaml file and returns it as a Python dictionary. + + Args: + None + + Returns: + dict: A dictionary containing the loaded data from the local_config.yaml file. + """ + with open(path, 'r') as file: + data = yaml.safe_load(file) + return data + + + def generate(self, + prompt:str, + n_predict: int = 128, + callback: Callable[[str], None] = None, + verbose: bool = False, + **gpt_params ): + """Generates text out of a prompt + This should ber implemented by child class + + Args: + prompt (str): The prompt to use for generation + n_predict (int, optional): Number of tokens to prodict. Defaults to 128. + callback (Callable[[str], None], optional): A callback function that is called everytime a new text element is generated. Defaults to None. + verbose (bool, optional): If true, the code will spit many informations about the generation process. Defaults to False. + """ + pass + def tokenize(self, prompt:str): + """ + Tokenizes the given prompt using the model's tokenizer. + + Args: + prompt (str): The input prompt to be tokenized. + + Returns: + list: A list of tokens representing the tokenized prompt. + """ + return prompt.split(" ") + + def detokenize(self, tokens_list:list): + """ + Detokenizes the given list of tokens using the model's tokenizer. + + Args: + tokens_list (list): A list of tokens to be detokenized. + + Returns: + str: The detokenized text as a string. + """ + return " ".join(tokens_list) + + @staticmethod + def list_models(config:dict, root_path="."): + """Lists the models for this binding + """ + root_path = Path(root_path) + models_dir =(root_path/'models')/config["binding_name"] # replace with the actual path to the models folder + return [f.name for f in models_dir.glob(LLMBinding.file_extension)] + + @staticmethod + def install_binding(binding_path, config:LOLLMSConfig): + install_file_name = "install.py" + install_script_path = binding_path / install_file_name + if install_script_path.exists(): + module_name = install_file_name[:-3] # Remove the ".py" extension + module_spec = importlib.util.spec_from_file_location(module_name, str(install_script_path)) + module = importlib.util.module_from_spec(module_spec) + module_spec.loader.exec_module(module) + if hasattr(module, "Install"): + module.Install(config) + + # To implement by children + # @staticmethod + # def get_available_models(): + diff --git a/lollms/bindings_zoo b/lollms/bindings_zoo new file mode 160000 index 0000000..3e3f290 --- /dev/null +++ b/lollms/bindings_zoo @@ -0,0 +1 @@ +Subproject commit 3e3f2904d97368ca57ce7f382c629d39b439de23 diff --git a/lollms/configs/.gitignore b/lollms/configs/.gitignore new file mode 100644 index 0000000..9992118 --- /dev/null +++ b/lollms/configs/.gitignore @@ -0,0 +1 @@ +local_config.yaml \ No newline at end of file diff --git a/lollms/configs/config.yaml b/lollms/configs/config.yaml new file mode 100644 index 0000000..15925b9 --- /dev/null +++ b/lollms/configs/config.yaml @@ -0,0 +1,28 @@ +# =================== Lord Of Large Language Models Configuration file =========================== +version: 6 +binding_name: llama_cpp_official +model_name: null + +# Host information +host: localhost +port: 9600 + +# Genreration parameters +seed: -1 +n_predict: 1024 +ctx_size: 2048 +temperature: 0.9 +top_k: 50 +top_p: 0.95 +repeat_last_n: 40 +repeat_penalty: 1.2 + +n_threads: 8 + +#Personality parameters +personalities: ["english/generic/lollms"] +active_personality_id: 0 +override_personality_model_parameters: false #if true the personality parameters are overriden by those of the configuration (may affect personality behaviour) + +user_name: user + diff --git a/lollms/console.py b/lollms/console.py new file mode 100644 index 0000000..b8989c6 --- /dev/null +++ b/lollms/console.py @@ -0,0 +1,563 @@ +from lollms.personality import AIPersonality, MSG_TYPE +from lollms.binding import LOLLMSConfig, LLMBinding +from lollms.helpers import ASCIIColors +from lollms.paths import LollmsPaths +import shutil +import yaml +from pathlib import Path +import sys +import pkg_resources +import argparse +from tqdm import tqdm +from lollms import BindingBuilder, ModelBuilder, PersonalityBuilder + + +class MainMenu: + def __init__(self, conversation): + self.binding_infs = [] + self.conversation = conversation + + def show_logo(self): + print(f"{ASCIIColors.color_bright_yellow}") + print("█ █ █ █▄ ▄█▄ ▄█ ") + print("█ ▄▀▀▄ █ █ █ ▀ ▀ █ ▄▀▀▄ ") + print("█ █ █ █ █ █ █ ▀▄▄ ") + print("█▄▄▄▄ ▀▄▄▀ █▄▄▄▄▄ █▄▄▄▄ █ █ ▄▄▄▀ ") + print(f"{ASCIIColors.color_reset}") + print(f"{ASCIIColors.color_red}Version: {ASCIIColors.color_green}{pkg_resources.get_distribution('lollms').version}") + print(f"{ASCIIColors.color_red}By : {ASCIIColors.color_green}ParisNeo") + print(f"{ASCIIColors.color_reset}") + + def show_commands_list(self): + print() + print("Commands:") + print(f" {ASCIIColors.color_red}├{ASCIIColors.color_reset} menu: shows main menu") + print(f" {ASCIIColors.color_red}├{ASCIIColors.color_reset} help: shows this info") + print(f" {ASCIIColors.color_red}├{ASCIIColors.color_reset} reset: resets the context") + print(f" {ASCIIColors.color_red}├{ASCIIColors.color_reset} : forces the model to continue generating") + print(f" {ASCIIColors.color_red}├{ASCIIColors.color_reset} context_infos: current context size and space left before cropping") + print(f" {ASCIIColors.color_red}├{ASCIIColors.color_reset} start_log: starts logging the discussion to a text file") + print(f" {ASCIIColors.color_red}├{ASCIIColors.color_reset} stop_log: stops logging the discussion to a text file") + print(f" {ASCIIColors.color_red}├{ASCIIColors.color_reset} send_file: uploads a file to the AI") + print(f" {ASCIIColors.color_red}└{ASCIIColors.color_reset} exit: exists the console") + + def show_menu(self, options): + print("Menu:") + for index, option in enumerate(options): + print(f"{ASCIIColors.color_green}{index + 1} -{ASCIIColors.color_reset} {option}") + choice = input("Enter your choice: ") + return int(choice) if choice.isdigit() else -1 + + def select_binding(self): + bindings_list = [] + print() + print(f"{ASCIIColors.color_green}Current binding: {ASCIIColors.color_reset}{self.conversation.config['binding_name']}") + for p in self.conversation.lollms_paths.bindings_zoo_path.iterdir(): + if p.is_dir(): + with open(p/"binding_card.yaml", "r") as f: + card = yaml.safe_load(f) + with open(p/"models.yaml", "r") as f: + models = yaml.safe_load(f) + entry=f"{card['name']} (by {card['author']})" + bindings_list.append(entry) + entry={ + "name":p.name, + "card":card, + "models":models + } + self.binding_infs.append(entry) + bindings_list += ["Back"] + choice = self.show_menu(bindings_list) + if 1 <= choice <= len(bindings_list)-1: + print(f"You selected binding: {ASCIIColors.color_green}{self.binding_infs[choice - 1]['name']}{ASCIIColors.color_reset}") + self.conversation.config['binding_name']=self.binding_infs[choice - 1]['name'] + self.conversation.load_binding() + self.conversation.config.save_config() + elif choice <= len(bindings_list): + return + else: + print("Invalid choice!") + + def select_model(self): + print() + print(f"{ASCIIColors.color_green}Current model: {ASCIIColors.color_reset}{self.conversation.config['model_name']}") + models_dir:Path = (self.conversation.lollms_paths.personal_models_path/self.conversation.config['binding_name']) + models_dir.mkdir(parents=True, exist_ok=True) + models_list = [m.name for m in models_dir.iterdir() if m.name.lower() not in [".ds_dtore","thumb.db"]] + ["Install model", "Change binding", "Back"] + choice = self.show_menu(models_list) + if 1 <= choice <= len(models_list)-3: + print(f"You selected model: {ASCIIColors.color_green}{models_list[choice - 1]}{ASCIIColors.color_reset}") + self.conversation.config['model_name']=models_list[choice - 1] + self.conversation.load_model() + self.conversation.config.save_config() + elif choice <= len(models_list)-2: + self.install_model() + elif choice <= len(models_list)-1: + self.select_binding() + self.select_model() + elif choice <= len(models_list): + return + else: + print("Invalid choice!") + + def install_model(self): + models_list = ["Install model from internet","Install model from local file","Back"] + choice = self.show_menu(models_list) + if 1 <= choice <= len(models_list)-2: + url = input("Give a URL to the model to be downloaded :") + def progress_callback(blocks, block_size, total_size): + tqdm_bar.total=total_size + tqdm_bar.update(block_size) + + # Usage example + with tqdm(total=100, unit="%", desc="Download Progress", ncols=80) as tqdm_bar: + self.conversation.config.download_model(url,self.conversation.binding_class, progress_callback) + self.select_model() + elif choice <= len(models_list)-1: + path = Path(input("Give a path to the model to be used on your PC:")) + if path.exists(): + self.conversation.config.reference_model(path) + self.select_model() + elif choice <= len(models_list): + return + else: + print("Invalid choice!") + + def select_personality(self): + print() + print(f"{ASCIIColors.color_green}Current personality: {ASCIIColors.color_reset}{self.conversation.config['personalities'][self.conversation.config['active_personality_id']]}") + personality_languages = [p.stem for p in self.conversation.lollms_paths.personalities_zoo_path.iterdir() if p.is_dir()] + ["Back"] + print("Select language") + choice = self.show_menu(personality_languages) + if 1 <= choice <= len(personality_languages)-1: + language = personality_languages[choice - 1] + print(f"You selected language: {ASCIIColors.color_green}{language}{ASCIIColors.color_reset}") + personality_categories = [p.stem for p in (self.conversation.lollms_paths.personalities_zoo_path/language).iterdir() if p.is_dir()]+["Back"] + print("Select category") + choice = self.show_menu(personality_categories) + if 1 <= choice <= len(personality_categories): + category = personality_categories[choice - 1] + print(f"You selected category: {ASCIIColors.color_green}{category}{ASCIIColors.color_reset}") + + personality_names = [p.stem for p in (self.conversation.lollms_paths.personalities_zoo_path/language/category).iterdir() if p.is_dir()]+["Back"] + print("Select personality") + choice = self.show_menu(personality_names) + if 1 <= choice <= len(personality_names)-1: + name = personality_names[choice - 1] + print(f"You selected personality: {ASCIIColors.color_green}{name}{ASCIIColors.color_reset}") + self.conversation.config["personalities"]=[f"{language}/{category}/{name}"] + self.conversation.load_personality() + self.conversation.config.save_config() + print("Personality saved successfully!") + elif 1 <= choice <= len(personality_names): + return + else: + print("Invalid choice!") + elif 1 <= choice <= len(personality_categories): + return + else: + print("Invalid choice!") + elif 1 <= choice <= len(personality_languages): + return + else: + print("Invalid choice!") + + def reinstall_binding(self): + conversation = self.conversation + try: + conversation.binding_class = BindingBuilder().build_binding(conversation.lollms_paths.bindings_zoo_path, conversation.config, force_reinstall=True) + except Exception as ex: + print(ex) + print(f"Couldn't find binding. Please verify your configuration file at {conversation.config.file_path} or use the next menu to select a valid binding") + self.select_binding() + + def reinstall_personality(self): + conversation = self.conversation + try: + conversation.personality = PersonalityBuilder(conversation.lollms_paths, conversation.config, conversation.model).build_personality(force_reinstall=True) + except Exception as ex: + ASCIIColors.error(f"Couldn't load personality. Please verify your configuration file at {conversation.configuration_path} or use the next menu to select a valid personality") + ASCIIColors.error(f"Binding returned this exception : {ex}") + ASCIIColors.error(f"{conversation.config.get_personality_path_infos()}") + print("Please select a valid model or install a new one from a url") + self.select_model() + + def main_menu(self): + while True: + print("\nMain Menu:") + print(f"{ASCIIColors.color_green}1 -{ASCIIColors.color_reset} Select Binding") + print(f"{ASCIIColors.color_green}2 -{ASCIIColors.color_reset} Select Model") + print(f"{ASCIIColors.color_green}3 -{ASCIIColors.color_reset} Select Personality") + print(f"{ASCIIColors.color_green}4 -{ASCIIColors.color_reset} Reinstall Binding") + print(f"{ASCIIColors.color_green}5 -{ASCIIColors.color_reset} Reinstall Personality") + print(f"{ASCIIColors.color_green}0 -{ASCIIColors.color_reset} Exit") + choice = input("Enter your choice: ").strip() + if choice == "1": + self.select_binding() + elif choice == "2": + self.select_model() + elif choice == "3": + self.select_personality() + elif choice == "4": + self.reinstall_binding() + elif choice == "5": + self.reinstall_personality() + elif choice == "0": + print("Back to main app...") + break + else: + print("Invalid choice! Try again.") + +class Conversation: + def __init__( + self, + configuration_path:str|Path=None, + show_logo:bool=True, + show_commands_list:bool=False, + show_personality_infos:bool=True, + show_model_infos:bool=True, + show_welcome_message:bool=True + ): + + # Fore it to be a path + self.configuration_path = configuration_path + self.is_logging = False + self.log_file_path = "" + + self.bot_says = "" + # get paths + self.lollms_paths = LollmsPaths.find_paths(force_local=False) + + # Build menu + self.menu = MainMenu(self) + + + # Configuration loading part + self.config = LOLLMSConfig.autoload(self.lollms_paths, configuration_path) + + + # load binding + self.load_binding() + + # Load model + self.load_model() + # cfg.binding_name = llm_binding.binding_folder_name + # cfg.model_name = model_name + + # Load personality + try: + self.load_personality() + except Exception as ex: + print(f"No personality selected. Please select one from the zoo. {ex}") + self.menu.select_personality() + + if show_logo: + self.menu.show_logo() + if show_commands_list: + self.menu.show_commands_list() + + if show_personality_infos: + print() + print(f"{ASCIIColors.color_green}Current personality : {ASCIIColors.color_reset}{self.personality}") + print(f"{ASCIIColors.color_green}Version : {ASCIIColors.color_reset}{self.personality.version}") + print(f"{ASCIIColors.color_green}Author : {ASCIIColors.color_reset}{self.personality.author}") + print(f"{ASCIIColors.color_green}Description : {ASCIIColors.color_reset}{self.personality.personality_description}") + print() + + if show_model_infos: + print() + print(f"{ASCIIColors.color_green}Current binding : {ASCIIColors.color_reset}{self.config['binding_name']}") + print(f"{ASCIIColors.color_green}Current model : {ASCIIColors.color_reset}{self.config['model_name']}") + print(f"{ASCIIColors.color_green}Personal data path : {ASCIIColors.color_reset}{self.lollms_paths.personal_path}") + + print() + + + # If there is a disclaimer, show it + if self.personality.disclaimer != "": + print(f"\n{ASCIIColors.color_red}Disclaimer") + print(self.personality.disclaimer) + print(f"{ASCIIColors.color_reset}") + + if show_welcome_message and self.personality.welcome_message: + print(self.personality.name+": ", end="") + print(self.personality.welcome_message) + + def ask_override_file(self): + user_input = input("Would you like to override the existing file? (Y/N): ") + user_input = user_input.lower() + if user_input == "y" or user_input == "yes": + print("File will be overridden.") + return True + elif user_input == "n" or user_input == "no": + print("File will not be overridden.") + return False + else: + print("Invalid input. Please enter 'Y' or 'N'.") + # Call the function again recursively to prompt the user for valid input + return self.ask_override_file() + + def start_log(self, file_name): + if Path(file_name).is_absolute(): + self.log_file_path = Path(file_name) + else: + home_dir = Path.home()/"Documents/lollms/logs" + home_dir.mkdir(parents=True, exist_ok=True) + self.log_file_path = home_dir/file_name + if self.log_file_path.exists(): + if not self.ask_override_file(): + print("Canceled") + return + try: + with(open(self.log_file_path, "w") as f): + self.header = f"""------------------------ +Log file for lollms discussion +Participating personalities: +{self.config['personalities']} +------------------------ +""" + f.write(self.header) + self.is_logging = True + return True + except: + return False + + def log(self, text, append=False): + try: + with(open(self.log_file_path, "a" if append else "w") as f): + f.write(text) if append else f.write(self.header+self.personality.personality_conditioning+text) + return True + except: + return False + + def stop_log(self): + self.is_logging = False + + + + def load_binding(self): + if self.config.binding_name is None: + print(f"No bounding selected") + print("Please select a valid model or install a new one from a url") + self.menu.select_binding() + # cfg.download_model(url) + else: + try: + self.binding_class = BindingBuilder().build_binding(self.lollms_paths.bindings_zoo_path, self.config) + except Exception as ex: + print(ex) + print(f"Couldn't find binding. Please verify your configuration file at {self.configuration_path} or use the next menu to select a valid binding") + self.menu.select_binding() + + def load_model(self): + try: + self.model = ModelBuilder(self.binding_class, self.config).get_model() + except Exception as ex: + ASCIIColors.error(f"Couldn't load model. Please verify your configuration file at {self.configuration_path} or use the next menu to select a valid model") + ASCIIColors.error(f"Binding returned this exception : {ex}") + ASCIIColors.error(f"{self.config.get_model_path_infos()}") + print("Please select a valid model or install a new one from a url") + self.menu.select_model() + + + def load_personality(self): + try: + self.personality = PersonalityBuilder(self.lollms_paths, self.config, self.model).build_personality() + except Exception as ex: + ASCIIColors.error(f"Couldn't load personality. Please verify your configuration file at {self.configuration_path} or use the next menu to select a valid personality") + ASCIIColors.error(f"Binding returned this exception : {ex}") + ASCIIColors.error(f"{self.config.get_personality_path_infos()}") + print("Please select a valid model or install a new one from a url") + self.menu.select_model() + self.cond_tk = self.personality.model.tokenize(self.personality.personality_conditioning) + self.n_cond_tk = len(self.cond_tk) + + def reset_context(self): + if self.personality.include_welcome_message_in_disucssion: + full_discussion = ( + self.personality.ai_message_prefix + + self.personality.welcome_message + + self.personality.link_text + ) + else: + full_discussion = "" + return full_discussion + + def safe_generate(self, full_discussion:str, n_predict=None, callback=None): + """safe_generate + + Args: + full_discussion (string): A prompt or a long discussion to use for generation + callback (_type_, optional): A callback to call for each received token. Defaults to None. + + Returns: + str: Model output + """ + if n_predict == None: + n_predict =self.personality.model_n_predicts + tk = self.personality.model.tokenize(full_discussion) + n_tokens = len(tk) + fd = self.personality.model.detokenize(tk[-min(self.config.ctx_size-self.n_cond_tk,n_tokens):]) + self.bot_says = "" + output = self.personality.model.generate(self.personality.personality_conditioning+fd, n_predict=n_predict, callback=callback) + return output + + def remove_text_from_string(self, string, text_to_find): + """ + Removes everything from the first occurrence of the specified text in the string (case-insensitive). + + Parameters: + string (str): The original string. + text_to_find (str): The text to find in the string. + + Returns: + str: The updated string. + """ + index = string.lower().find(text_to_find.lower()) + + if index != -1: + string = string[:index] + + return string + + def start_conversation(self): + full_discussion = self.reset_context() + while True: + try: + prompt = input(f"{ASCIIColors.color_green}You: {ASCIIColors.color_reset}") + if prompt == "exit": + return + if prompt == "menu": + self.menu.main_menu() + continue + if prompt == "reset": + self.reset_context() + print(f"{ASCIIColors.color_red}Context reset issued{ASCIIColors.color_reset}") + continue + if prompt == "start_log": + fp = input("Please enter a log file path (ex: log.txt): ") + self.start_log(fp) + print(f"{ASCIIColors.color_red}Started logging to : {self.log_file_path}{ASCIIColors.color_reset}") + continue + if prompt == "stop_log": + self.stop_log() + print(f"{ASCIIColors.color_red}Log stopped{ASCIIColors.color_reset}") + continue + if prompt == "send_file": + if self.personality.processor is None: + print(f"{ASCIIColors.color_red}This personality doesn't support file reception{ASCIIColors.color_reset}") + continue + fp = input("Please enter a file path: ") + # Remove double quotes using string slicing + if fp.startswith('"') and fp.endswith('"'): + fp = fp[1:-1] + if self.personality.processor.add_file(fp): + print(f"{ASCIIColors.color_green}File imported{ASCIIColors.color_reset}") + else: + print(f"{ASCIIColors.color_red}Couldn't load file{ASCIIColors.color_reset}") + continue + + + if prompt == "context_infos": + tokens = self.personality.model.tokenize(full_discussion) + print(f"{ASCIIColors.color_green}Current context has {len(tokens)} tokens/ {self.config.ctx_size}{ASCIIColors.color_reset}") + continue + + if prompt != '': + if self.personality.processor is not None and self.personality.processor_cfg["process_model_input"]: + preprocessed_prompt = self.personality.processor.process_model_input(prompt) + else: + preprocessed_prompt = prompt + + if self.personality.processor is not None and self.personality.processor_cfg["custom_workflow"]: + full_discussion += ( + self.personality.user_message_prefix + + preprocessed_prompt + ) + else: + full_discussion += ( + self.personality.user_message_prefix + + preprocessed_prompt + + self.personality.link_text + + self.personality.ai_message_prefix + ) + + def callback(text, type:MSG_TYPE=None): + if type == MSG_TYPE.MSG_TYPE_CHUNK: + # Replace stdout with the default stdout + sys.stdout = sys.__stdout__ + print(text, end="", flush=True) + bot_says = self.bot_says + text + antiprompt = self.personality.detect_antiprompt(bot_says) + if antiprompt: + self.bot_says = self.remove_text_from_string(bot_says,antiprompt) + print("Detected hallucination") + return False + else: + self.bot_says = bot_says + return True + + tk = self.personality.model.tokenize(full_discussion) + n_tokens = len(tk) + fd = self.personality.model.detokenize(tk[-min(self.config.ctx_size-self.n_cond_tk,n_tokens):]) + + print(f"{ASCIIColors.color_red}{self.personality.name}:{ASCIIColors.color_reset}", end='', flush=True) + if self.personality.processor is not None and self.personality.processor_cfg["custom_workflow"]: + output = self.personality.processor.run_workflow(prompt, previous_discussion_text=self.personality.personality_conditioning+fd, callback=callback) + print(output) + + else: + output = self.personality.model.generate(self.personality.personality_conditioning+fd, n_predict=self.personality.model_n_predicts, callback=callback) + full_discussion += output.strip() + print() + + if self.personality.processor is not None and self.personality.processor_cfg["process_model_output"]: + output = self.personality.processor.process_model_output(output) + + self.log(full_discussion) + + except KeyboardInterrupt: + print("Keyboard interrupt detected.\nBye") + break + + print("Done") + print(f"{self.personality}") + +def main(): + # Create the argument parser + parser = argparse.ArgumentParser(description='App Description') + + # Add the configuration path argument + parser.add_argument('--configuration_path', default=None, + help='Path to the configuration file') + + + parser.add_argument('--reset_personal_path', action='store_true', help='Reset the personal path') + parser.add_argument('--reset_config', action='store_true', help='Reset the configurations') + + # Parse the command-line arguments + args = parser.parse_args() + + if args.reset_personal_path: + LollmsPaths.reset_configs() + + if args.reset_config: + cfg_path = LollmsPaths.find_paths().personal_configuration_path / "local_config.yaml" + try: + cfg_path.unlink() + ASCIIColors.success("LOLLMS configuration reset successfully") + except: + ASCIIColors.success("Couldn't reset LOLLMS configuration") + + + # Parse the command-line arguments + args = parser.parse_args() + + configuration_path = args.configuration_path + + conversation = Conversation(configuration_path=configuration_path, show_commands_list=True) + conversation.start_conversation() + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/lollms/helpers.py b/lollms/helpers.py new file mode 100644 index 0000000..b5819b0 --- /dev/null +++ b/lollms/helpers.py @@ -0,0 +1,109 @@ +from pathlib import Path +import yaml + + + +class ASCIIColors: + # Reset + color_reset = '\u001b[0m' + + # Regular colors + color_black = '\u001b[30m' + color_red = '\u001b[31m' + color_green = '\u001b[32m' + color_yellow = '\u001b[33m' + color_blue = '\u001b[34m' + color_magenta = '\u001b[35m' + color_cyan = '\u001b[36m' + color_white = '\u001b[37m' + color_orange = '\u001b[38;5;202m' + + # Bright colors + color_bright_black = '\u001b[30;1m' + color_bright_red = '\u001b[31;1m' + color_bright_green = '\u001b[32;1m' + color_bright_yellow = '\u001b[33;1m' + color_bright_blue = '\u001b[34;1m' + color_bright_magenta = '\u001b[35;1m' + color_bright_cyan = '\u001b[36;1m' + color_bright_white = '\u001b[37;1m' + color_bright_orange = '\u001b[38;5;208m' + + @staticmethod + def print(text, color=color_bright_red): + print(f"{color}{text}{ASCIIColors.color_reset}") + + @staticmethod + def warning(text): + print(f"{ASCIIColors.color_bright_orange}{text}{ASCIIColors.color_reset}") + + @staticmethod + def error(text): + print(f"{ASCIIColors.color_bright_red}{text}{ASCIIColors.color_reset}") + + @staticmethod + def success(text): + print(f"{ASCIIColors.color_green}{text}{ASCIIColors.color_reset}") + + @staticmethod + def info(text): + print(f"{ASCIIColors.color_blue}{text}{ASCIIColors.color_reset}") + +class BaseConfig(): + def __init__(self, exceptional_keys=[], config = None): + self.exceptional_keys = exceptional_keys + self.config = config + + + def to_dict(self): + return self.config + + def __getitem__(self, key): + if self.config is None: + raise ValueError("No configuration loaded.") + return self.config[key] + + def __getattr__(self, key): + if key == "exceptional_keys": + return super().__getattribute__(key) + if key in self.exceptional_keys+ ["config"] or key.startswith("__"): + return super().__getattribute__(key) + else: + if self.config is None: + raise ValueError("No configuration loaded.") + return self.config[key] + + + def __setattr__(self, key, value): + if key == "exceptional_keys": + return super().__setattr__(key, value) + if key in self.exceptional_keys+ ["config"] or key.startswith("__"): + super().__setattr__(key, value) + else: + if self.config is None: + raise ValueError("No configuration loaded.") + self.config[key] = value + + def __setitem__(self, key, value): + if self.config is None: + raise ValueError("No configuration loaded.") + self.config[key] = value + + def __contains__(self, item): + if self.config is None: + raise ValueError("No configuration loaded.") + return item in self.config + + def load_config(self, file_path:Path=None): + if file_path is None: + file_path = self.file_path + with open(file_path, 'r', encoding='utf-8') as stream: + self.config = yaml.safe_load(stream) + + def save_config(self, file_path:Path=None): + if file_path is None: + file_path = self.file_path + if self.config is None: + raise ValueError("No configuration loaded.") + with open(file_path, "w") as f: + yaml.dump(self.config, f) diff --git a/lollms/langchain_integration.py b/lollms/langchain_integration.py new file mode 100644 index 0000000..ac47aae --- /dev/null +++ b/lollms/langchain_integration.py @@ -0,0 +1,267 @@ +"""Wrapper around llama.cpp.""" +import logging +from typing import Any, Dict, Generator, List, Optional + +from pydantic import Field, root_validator + +from langchain.callbacks.manager import CallbackManagerForLLMRun +from langchain.llms.base import LLM + +logger = logging.getLogger(__name__) + + +class LLMModel(LLM): + """Wrapper around the llama.cpp model. + + To use, you should have the llama-cpp-python library installed, and provide the + path to the Llama model as a named parameter to the constructor. + Check out: https://github.com/abetlen/llama-cpp-python + + Example: + .. code-block:: python + + from langchain.llms import LlamaCppEmbeddings + llm = LlamaCppEmbeddings(model_path="/path/to/llama/model") + """ + + client: Any #: :meta private: + model_path: str + """The path to the Llama model file.""" + + lora_base: Optional[str] = None + """The path to the Llama LoRA base model.""" + + lora_path: Optional[str] = None + """The path to the Llama LoRA. If None, no LoRa is loaded.""" + + n_ctx: int = Field(512, alias="n_ctx") + """Token context window.""" + + n_parts: int = Field(-1, alias="n_parts") + """Number of parts to split the model into. + If -1, the number of parts is automatically determined.""" + + seed: int = Field(-1, alias="seed") + """Seed. If -1, a random seed is used.""" + + f16_kv: bool = Field(True, alias="f16_kv") + """Use half-precision for key/value cache.""" + + logits_all: bool = Field(False, alias="logits_all") + """Return logits for all tokens, not just the last token.""" + + vocab_only: bool = Field(False, alias="vocab_only") + """Only load the vocabulary, no weights.""" + + use_mlock: bool = Field(False, alias="use_mlock") + """Force system to keep model in RAM.""" + + n_threads: Optional[int] = Field(None, alias="n_threads") + """Number of threads to use. + If None, the number of threads is automatically determined.""" + + n_batch: Optional[int] = Field(8, alias="n_batch") + """Number of tokens to process in parallel. + Should be a number between 1 and n_ctx.""" + + n_gpu_layers: Optional[int] = Field(None, alias="n_gpu_layers") + """Number of layers to be loaded into gpu memory. Default None.""" + + suffix: Optional[str] = Field(None) + """A suffix to append to the generated text. If None, no suffix is appended.""" + + max_tokens: Optional[int] = 256 + """The maximum number of tokens to generate.""" + + temperature: Optional[float] = 0.8 + """The temperature to use for sampling.""" + + top_p: Optional[float] = 0.95 + """The top-p value to use for sampling.""" + + logprobs: Optional[int] = Field(None) + """The number of logprobs to return. If None, no logprobs are returned.""" + + echo: Optional[bool] = False + """Whether to echo the prompt.""" + + stop: Optional[List[str]] = [] + """A list of strings to stop generation when encountered.""" + + repeat_penalty: Optional[float] = 1.1 + """The penalty to apply to repeated tokens.""" + + top_k: Optional[int] = 40 + """The top-k value to use for sampling.""" + + last_n_tokens_size: Optional[int] = 64 + """The number of tokens to look back when applying the repeat_penalty.""" + + use_mmap: Optional[bool] = True + """Whether to keep the model loaded in RAM""" + + streaming: bool = True + """Whether to stream the results, token by token.""" + + @root_validator() + def validate_environment(cls, values: Dict) -> Dict: + """Validate that llama-cpp-python library is installed.""" + model = values["model"] + model_param_names = [ + "lora_path", + "lora_base", + "n_ctx", + "n_parts", + "seed", + "f16_kv", + "logits_all", + "vocab_only", + "use_mlock", + "n_threads", + "n_batch", + "use_mmap", + "last_n_tokens_size", + ] + model_params = {k: values[k] for k in model_param_names} + # For backwards compatibility, only include if non-null. + if values["n_gpu_layers"] is not None: + model_params["n_gpu_layers"] = values["n_gpu_layers"] + + values["client"] = model + + return values + + @property + def _default_params(self) -> Dict[str, Any]: + """Get the default parameters for calling llama_cpp.""" + return { + "suffix": self.suffix, + "max_tokens": self.max_tokens, + "temperature": self.temperature, + "top_p": self.top_p, + "logprobs": self.logprobs, + "echo": self.echo, + "stop_sequences": self.stop, # key here is convention among LLM classes + "repeat_penalty": self.repeat_penalty, + "top_k": self.top_k, + } + + @property + def _identifying_params(self) -> Dict[str, Any]: + """Get the identifying parameters.""" + return {**{"model_path": self.model_path}, **self._default_params} + + @property + def _llm_type(self) -> str: + """Return type of llm.""" + return "lollms_generic_llm" + + def _get_parameters(self, stop: Optional[List[str]] = None) -> Dict[str, Any]: + """ + Performs sanity check, preparing paramaters in format needed by llama_cpp. + + Args: + stop (Optional[List[str]]): List of stop sequences for llama_cpp. + + Returns: + Dictionary containing the combined parameters. + """ + + # Raise error if stop sequences are in both input and default params + if self.stop and stop is not None: + raise ValueError("`stop` found in both the input and default params.") + + params = self._default_params + + # llama_cpp expects the "stop" key not this, so we remove it: + params.pop("stop_sequences") + + # then sets it as configured, or default to an empty list: + params["stop"] = self.stop or stop or [] + + return params + + def _call( + self, + prompt: str, + stop: Optional[List[str]] = None, + run_manager: Optional[CallbackManagerForLLMRun] = None, + ) -> str: + """Call the model and return the output. + + Args: + prompt: The prompt to use for generation. + stop: A list of strings to stop generation when encountered. + + Returns: + The generated text. + + Example: + .. code-block:: python + + from langchain.llms import LlamaCpp + llm = LlamaCpp(model_path="/path/to/local/llama/model.bin") + llm("This is a prompt.") + """ + if self.streaming: + # If streaming is enabled, we use the stream + # method that yields as they are generated + # and return the combined strings from the first choices's text: + combined_text_output = "" + for token in self.stream(prompt=prompt, stop=stop, run_manager=run_manager): + combined_text_output += token["choices"][0]["text"] + return combined_text_output + else: + params = self._get_parameters(stop) + result = self.client(prompt=prompt, **params) + return result["choices"][0]["text"] + + def stream( + self, + prompt: str, + stop: Optional[List[str]] = None, + run_manager: Optional[CallbackManagerForLLMRun] = None, + ) -> Generator[Dict, None, None]: + """Yields results objects as they are generated in real time. + + BETA: this is a beta feature while we figure out the right abstraction: + Once that happens, this interface could change. + + It also calls the callback manager's on_llm_new_token event with + similar parameters to the OpenAI LLM class method of the same name. + + Args: + prompt: The prompts to pass into the model. + stop: Optional list of stop words to use when generating. + + Returns: + A generator representing the stream of tokens being generated. + + Yields: + A dictionary like objects containing a string token and metadata. + See llama-cpp-python docs and below for more. + + Example: + .. code-block:: python + + from langchain.llms import LlamaCpp + llm = LlamaCpp( + model_path="/path/to/local/model.bin", + temperature = 0.5 + ) + for chunk in llm.stream("Ask 'Hi, how are you?' like a pirate:'", + stop=["'","\n"]): + result = chunk["choices"][0] + print(result["text"], end='', flush=True) + + """ + params = self._get_parameters(stop) + result = self.client(prompt=prompt, stream=True, **params) + for chunk in result: + token = chunk["choices"][0]["text"] + log_probs = chunk["choices"][0].get("logprobs", None) + if run_manager: + run_manager.on_llm_new_token( + token=token, verbose=self.verbose, log_probs=log_probs + ) + yield chunk diff --git a/lollms/paths.py b/lollms/paths.py new file mode 100644 index 0000000..f3469b4 --- /dev/null +++ b/lollms/paths.py @@ -0,0 +1,178 @@ +from pathlib import Path +import shutil +from lollms.helpers import ASCIIColors +from lollms.helpers import BaseConfig + +lollms_path = Path(__file__).parent +lollms_default_cfg_path = lollms_path / "configs/config.yaml" +lollms_bindings_zoo_path = lollms_path / "bindings_zoo" +lollms_personalities_zoo_path = lollms_path / "personalities_zoo" + + +# Now we speify the personal folders +class LollmsPaths: + def __init__(self, lollms_path=None, personal_path=None, custom_default_cfg_path=None): + if lollms_path is None: + lollms_path = Path(__file__).parent + else: + lollms_path = Path(lollms_path) + if personal_path is None: + personal_path = Path.home() / "Documents/lollms" + else: + personal_path = Path(personal_path) + + if custom_default_cfg_path is not None: + self.default_cfg_path = Path(custom_default_cfg_path) + else: + self.default_cfg_path = lollms_path / "configs/config.yaml" + self.bindings_zoo_path = lollms_path / "bindings_zoo" + self.personalities_zoo_path = lollms_path / "personalities_zoo" + + self.personal_path = personal_path + self.personal_configuration_path = personal_path / "configs" + self.personal_models_path = personal_path / "models" + + self.create_directories() + self.copy_default_config() + + def change_personal_path(self, path): + self.personal_path = path + + def create_directories(self): + self.personal_path.mkdir(parents=True, exist_ok=True) + self.personal_configuration_path.mkdir(parents=True, exist_ok=True) + self.personal_models_path.mkdir(parents=True, exist_ok=True) + + def copy_default_config(self): + local_config_path = self.personal_configuration_path / "local_config.yaml" + if not local_config_path.exists(): + shutil.copy(self.default_cfg_path, str(local_config_path)) + + + @staticmethod + def find_paths(force_local=False, custom_default_cfg_path=None): + lollms_path = Path(__file__).parent + global_paths_cfg = Path("./global_paths_cfg.yaml") + if global_paths_cfg.exists(): + try: + cfg = BaseConfig() + cfg.load_config(global_paths_cfg) + lollms_path = cfg.lollms_path + lollms_personal_path = cfg.lollms_personal_path + return LollmsPaths(lollms_path, lollms_personal_path, custom_default_cfg_path=custom_default_cfg_path) + except Exception as ex: + print(f"{ASCIIColors.color_red}Global paths configuration file found but seems to be corrupted{ASCIIColors.color_reset}") + print("Couldn't find your personal data path!") + cfg.lollms_path = Path(__file__).parent + cfg.lollms_personal_path = input("Please specify the folder where your configuration files, your models and your custom personalities need to be stored:") + cfg.save_config(global_paths_cfg) + lollms_path = cfg.lollms_path + lollms_personal_path = cfg.lollms_personal_path + return LollmsPaths(lollms_path, lollms_personal_path, custom_default_cfg_path=custom_default_cfg_path) + else: + # if the app is not forcing a specific path, then try to find out if the default installed library has specified a default path + global_paths_cfg = lollms_path/"global_paths_cfg.yaml" + if global_paths_cfg.exists(): + try: + cfg = BaseConfig() + cfg.load_config(global_paths_cfg) + lollms_path = cfg.lollms_path + lollms_personal_path = cfg.lollms_personal_path + return LollmsPaths(lollms_path, lollms_personal_path, custom_default_cfg_path=custom_default_cfg_path) + except Exception as ex: + print(f"{ASCIIColors.color_red}Global paths configuration file found but seems to be corrupted{ASCIIColors.color_reset}") + print("Couldn't find your personal data path!") + cfg.lollms_path = Path(__file__).parent + cfg.lollms_personal_path = input("Please specify the folder where your configuration files, your models and your custom personalities need to be stored:") + cfg.save_config(global_paths_cfg) + lollms_path = cfg.lollms_path + lollms_personal_path = cfg.lollms_personal_path + return LollmsPaths(lollms_path, lollms_personal_path, custom_default_cfg_path=custom_default_cfg_path) + else: # First time + print(f"{ASCIIColors.color_green}Welcome! It seems this is your first use of the new lollms app.{ASCIIColors.color_reset}") + print(f"To make it clear where your data are stored, we now give the user the choice where to put its data.") + print(f"This allows you to mutualize models which are heavy, between multiple lollms compatible apps.") + print(f"You can change this at any tome using the lollms-update_path script or by simply change the content of the global_paths_cfg.yaml file.") + print(f"Please provide a folder to store your configurations files, your models and your personal data (database, custom personalities etc).") + cfg = BaseConfig(config={ + "lollms_path":str(Path(__file__).parent), + "lollms_personal_path":str(Path.home()/"Documents/lollms") + }) + + cfg.lollms_personal_path = input(f"Folder path: ({cfg.lollms_personal_path}):") + if cfg.lollms_personal_path=="": + cfg.lollms_personal_path = str(Path.home()/"Documents/lollms") + + print(f"Selected: {cfg.lollms_personal_path}") + pp= Path(cfg.lollms_personal_path) + if not pp.exists(): + try: + pp.mkdir(parents=True) + except: + print(f"{ASCIIColors.color_red}It seams there is an error in the path you rovided{ASCIIColors.color_reset}") + return None + if force_local: + global_paths_cfg = Path("./global_paths_cfg.yaml") + else: + global_paths_cfg = lollms_path/"global_paths_cfg.yaml" + cfg.save_config(global_paths_cfg) + + return LollmsPaths(cfg.lollms_path, cfg.lollms_personal_path, custom_default_cfg_path=custom_default_cfg_path) + + + @staticmethod + def reset_configs(): + lollms_path = Path(__file__).parent + global_paths_cfg = Path("./global_paths_cfg.yaml") + if global_paths_cfg.exists(): + ASCIIColors.error("Resetting local settings") + global_paths_cfg.unlink() + return + global_paths_cfg = lollms_path/"global_paths_cfg.yaml" + if global_paths_cfg.exists(): + ASCIIColors.error("Resetting global settings") + global_paths_cfg.unlink() + + +# Try to find out if the application has a global paths config +# If the application has a local configuration file that points us to the paths configuration then load it +""" +global_paths_cfg = Path("./global_paths_cfg.yaml") +if global_paths_cfg.exists(): + cfg = BaseConfig() + cfg.load_config(global_paths_cfg) + try: + lollms_personal_path = cfg.global_path + except Exception as ex: + print("Couldn't find your global path!") + cfg.global_path = input("Please specify the folder where your configuration files, your models and your custom personalities need to be stored:") + lollms_personal_path = cfg.global_path + cfg.save_config(global_paths_cfg) +else: + # if the app is not forcing a specific path, then try to find out if the default installed library has specified a default path + global_paths_cfg = lollms_path/"global_paths_cfg.yaml" + if global_paths_cfg.exists(): + cfg = BaseConfig() + cfg.load_config(global_paths_cfg) + try: + lollms_personal_path = cfg.global_path + except Exception as ex: + print("Couldn't find your global path!") + cfg.global_path = input("Please specify the folder where your configuration files, your models and your custom personalities need to be stored:") + lollms_personal_path = cfg.global_path + cfg.save_config(global_paths_cfg) + + lollms_personal_path = Path.home()/"Documents/lollms" + +lollms_personal_configuration_path = lollms_personal_path/"configs" +lollms_personal_models_path = lollms_personal_path/"models" + +lollms_personal_path.mkdir(parents=True, exist_ok=True) +lollms_personal_configuration_path.mkdir(parents=True, exist_ok=True) +lollms_personal_models_path.mkdir(parents=True, exist_ok=True) + +if not(lollms_personal_configuration_path/"local_config.yaml").exists(): + shutil.copy(lollms_path / "configs/config.yaml", str(lollms_personal_configuration_path/"local_config.yaml")) + + +""" diff --git a/lollms/personalities_zoo b/lollms/personalities_zoo new file mode 160000 index 0000000..e20c068 --- /dev/null +++ b/lollms/personalities_zoo @@ -0,0 +1 @@ +Subproject commit e20c0687ce98f4ed80cf6e1bc7ddcc144be83154 diff --git a/lollms/personality.py b/lollms/personality.py new file mode 100644 index 0000000..fdd6fe8 --- /dev/null +++ b/lollms/personality.py @@ -0,0 +1,989 @@ +from datetime import datetime +from pathlib import Path +from lollms.paths import LollmsPaths +from lollms.binding import LLMBinding + +import pkg_resources +from pathlib import Path +from PIL import Image +from typing import Optional, List +import re +from datetime import datetime +import importlib +import shutil +import subprocess +import yaml +from enum import Enum + +class MSG_TYPE(Enum): + MSG_TYPE_CHUNK=0 + MSG_TYPE_FULL=1 + MSG_TYPE_META=2 + MSG_TYPE_REF=3 + MSG_TYPE_CODE=4 + MSG_TYPE_UI=5 + + +class APScript: + """ + Template class for implementing personality processor classes in the APScript framework. + + This class provides a basic structure and placeholder methods for processing model inputs and outputs. + Personality-specific processor classes should inherit from this class and override the necessary methods. + + Methods: + __init__(): + Initializes the APScript object. + + run_workflow(generate_fn, prompt): + Runs the workflow for processing the model input and output. + + process_model_input(text): + Process the model input. + + process_model_output(text): + Process the model output. + + Attributes: + None + + Usage: + ``` + # Create a personality-specific processor class that inherits from APScript + class MyPersonalityProcessor(APScript): + def __init__(self): + super().__init__() + + def process_model_input(self, text): + # Implement the desired behavior for processing the model input + # and return the processed model input + + def process_model_output(self, text): + # Implement the desired behavior for processing the model output + # and return the processed model output + + # Create an instance of the personality processor + my_processor = MyPersonalityProcessor() + + # Define the generate function and prompt + def generate_fn(prompt): + # Implement the logic to generate model output based on the prompt + # and return the generated text + + prompt = "Enter your input: " + + # Run the workflow + my_processor.run_workflow(generate_fn, prompt) + ``` + """ + def __init__(self, personality=None) -> None: + self.files=[] + self.personality = personality + + def install_personality(self, personality_path, force_reinstall=False): + install_file_name = "install.py" + install_script_path = personality_path/ "scripts" / install_file_name + if install_script_path.exists(): + module_name = install_file_name[:-3] # Remove the ".py" extension + module_spec = importlib.util.spec_from_file_location(module_name, str(install_script_path)) + module = importlib.util.module_from_spec(module_spec) + module_spec.loader.exec_module(module) + if hasattr(module, "Install"): + module.Install(self.personality,force_reinstall=force_reinstall) + def add_file(self, path): + self.files.append(path) + return True + + def remove_file(self, path): + self.files.remove(path) + + def load_config_file(self, path): + """ + Load the content of local_config.yaml file. + + The function reads the content of the local_config.yaml file and returns it as a Python dictionary. + + Args: + None + + Returns: + dict: A dictionary containing the loaded data from the local_config.yaml file. + """ + with open(path, 'r') as file: + data = yaml.safe_load(file) + return data + + def remove_text_from_string(self, string, text_to_find): + """ + Removes everything from the first occurrence of the specified text in the string (case-insensitive). + + Parameters: + string (str): The original string. + text_to_find (str): The text to find in the string. + + Returns: + str: The updated string. + """ + index = string.lower().find(text_to_find.lower()) + + if index != -1: + string = string[:index] + + return string + + def process(self, text:str, message_type:MSG_TYPE): + bot_says = self.bot_says + text + antiprompt = self.personality.detect_antiprompt(bot_says) + if antiprompt: + self.bot_says = self.remove_text_from_string(bot_says,antiprompt) + print("Detected hallucination") + return False + else: + self.bot_says = bot_says + return True + + def generate(self, prompt, max_size): + self.bot_says = "" + return self.personality.model.generate( + prompt, + max_size, + self.process, + temperature=self.personality.model_temperature, + top_k=self.personality.model_top_k, + top_p=self.personality.model_top_p, + repeat_penalty=self.personality.model_repeat_penalty, + ).strip() + + def run_workflow(self, prompt:str, previous_discussion_text:str="", callback=None): + """ + Runs the workflow for processing the model input and output. + + This method should be called to execute the processing workflow. + + Args: + generate_fn (function): A function that generates model output based on the input prompt. + The function should take a single argument (prompt) and return the generated text. + prompt (str): The input prompt for the model. + previous_discussion_text (str, optional): The text of the previous discussion. Default is an empty string. + + Returns: + None + """ + return None + + def process_model_input(self, text:str): + """ + Process the model input. + + This method should be overridden in the personality-specific processor class to define + the desired behavior for processing the model input. + + Args: + text (str): The model input text. + + Returns: + Any: The processed model input. + """ + return None + + def process_model_output(self, text:str): + """ + Process the model output. + + This method should be overridden in the personality-specific processor class to define + the desired behavior for processing the model output. + + Args: + text (str): The model output text. + + Returns: + Any: The processed model output. + """ + return None + + + + +def is_package_installed(package_name): + try: + dist = pkg_resources.get_distribution(package_name) + return True + except pkg_resources.DistributionNotFound: + return False + + +def install_package(package_name): + try: + # Check if the package is already installed + __import__(package_name) + print(f"{package_name} is already installed.") + except ImportError: + print(f"{package_name} is not installed. Installing...") + + # Install the package using pip + subprocess.check_call(["pip", "install", package_name]) + + print(f"{package_name} has been successfully installed.") + + +class AIPersonality: + + # Extra + Conditionning_commands={ + "date_time": datetime.now().strftime("%A, %B %d, %Y %I:%M:%S %p"), # Replaces {{date}} with actual date + "date": datetime.now().strftime("%A, %B %d, %Y"), # Replaces {{date}} with actual date + "time": datetime.now().strftime("%H:%M:%S"), # Replaces {{time}} with actual time + } + + def __init__( + self, + lollms_paths:LollmsPaths, + personality_package_path: str|Path = None, + model:LLMBinding=None, + run_scripts=True, + is_relative_path=True, + force_reinstall=False + ): + """ + Initialize an AIPersonality instance. + + Parameters: + personality_package_path (str or Path): The path to the folder containing the personality package. + + Raises: + ValueError: If the provided path is not a folder or does not contain a config.yaml file. + """ + self.lollms_paths = lollms_paths + self.model = model + + self.files = [] + + self.force_reinstall = force_reinstall + + # First setup a default personality + # Version + self._version = pkg_resources.get_distribution('lollms').version + + self.run_scripts = run_scripts + + #General information + self._author: str = "ParisNeo" + self._name: str = "lollms" + self._user_name: str = "user" + self._language: str = "english" + self._category: str = "General" + + # Conditionning + self._personality_description: str = "This personality is a helpful and Kind AI ready to help you solve your problems" + self._personality_conditioning: str = """## Instructions: +lollms (Lord of LLMs) is a smart and helpful Assistant built by the computer geek ParisNeo. +It is compatible with many bindings to LLM models such as llama, gpt4all, gptj, autogptq etc. +It can discuss with humans and assist them on many subjects. +It runs locally on your machine. No need to connect to the internet. +It answers the questions with precise details +Its performance depends on the underlying model size and training. +Try to answer with as much details as you can +Date: {{date}} +""" + self._welcome_message: str = "Welcome! I am lollms (Lord of LLMs) A free and open assistant built by ParisNeo. What can I do for you today?" + self._include_welcome_message_in_disucssion: bool = True + self._user_message_prefix: str = "## Human: " + self._link_text: str = "\n" + self._ai_message_prefix: str = "## lollms:" + self._anti_prompts:list = ["## Human","## lollms","##Human","##Assistant","##lollms"] + + # Extra + self._dependencies: List[str] = [] + + # Disclaimer + self._disclaimer: str = "" + + + # Default model parameters + self._model_temperature: float = 0.8 # higher: more creative, lower more deterministic + self._model_n_predicts: int = 2048 # higher: generates many words, lower generates + self._model_top_k: int = 50 + self._model_top_p: float = 0.95 + self._model_repeat_penalty: float = 1.3 + self._model_repeat_last_n: int = 40 + + self._processor_cfg: dict = {} + + self._logo: Optional[Image.Image] = None + self._processor = None + + + + if personality_package_path is None: + self.config = {} + self.assets_list = [] + self.personality_package_path = None + return + else: + if is_relative_path: + self.personality_package_path = self.lollms_paths.personalities_zoo_path/personality_package_path + else: + self.personality_package_path = Path(personality_package_path) + + # Validate that the path exists + if not self.personality_package_path.exists(): + raise ValueError("The provided path does not exist.") + + # Validate that the path format is OK with at least a config.yaml file present in the folder + if not self.personality_package_path.is_dir(): + raise ValueError("The provided path is not a folder.") + + # Open and store the personality + self.load_personality(personality_package_path) + + def __str__(self): + return f"{self.language}/{self.category}/{self.name}" + + + def load_personality(self, package_path=None): + """ + Load personality parameters from a YAML configuration file. + + Args: + package_path (str or Path): The path to the package directory. + + Raises: + ValueError: If the configuration file does not exist. + """ + if package_path is None: + package_path = self.personality_package_path + else: + package_path = Path(package_path) + + # Verify that there is at least a configuration file + config_file = package_path / "config.yaml" + if not config_file.exists(): + raise ValueError(f"The provided folder {package_path} does not exist.") + + with open(config_file, "r") as f: + config = yaml.safe_load(f) + + secret_file = package_path / "secret.yaml" + if secret_file.exists(): + with open(secret_file, "r") as f: + self._secret_cfg = yaml.safe_load(f) + else: + self._secret_cfg = None + + + # Load parameters from the configuration file + self._version = config.get("version", self._version) + self._author = config.get("author", self._author) + self._name = config.get("name", self._name) + self._user_name = config.get("user_name", self._user_name) + self._language = config.get("language", self._language) + self._category = config.get("category", self._category) + self._personality_description = config.get("personality_description", self._personality_description) + self._personality_conditioning = config.get("personality_conditioning", self._personality_conditioning) + self._welcome_message = config.get("welcome_message", self._welcome_message) + self._include_welcome_message_in_disucssion = config.get("include_welcome_message_in_disucssion", self._include_welcome_message_in_disucssion) + + self._user_message_prefix = config.get("user_message_prefix", self._user_message_prefix) + self._link_text = config.get("link_text", self._link_text) + self._ai_message_prefix = config.get("ai_message_prefix", self._ai_message_prefix) + self._anti_prompts = config.get("anti_prompts", self._anti_prompts) + self._dependencies = config.get("dependencies", self._dependencies) + self._disclaimer = config.get("disclaimer", self._disclaimer) + self._model_temperature = config.get("model_temperature", self._model_temperature) + self._model_n_predicts = config.get("model_n_predicts", self._model_n_predicts) + self._model_top_k = config.get("model_top_k", self._model_top_k) + self._model_top_p = config.get("model_top_p", self._model_top_p) + self._model_repeat_penalty = config.get("model_repeat_penalty", self._model_repeat_penalty) + self._model_repeat_last_n = config.get("model_repeat_last_n", self._model_repeat_last_n) + + # Script parameters (for example keys to connect to search engine or any other usage) + self._processor_cfg = config.get("processor_cfg", self._processor_cfg) + + + #set package path + self.personality_package_path = package_path + + # Check for a logo file + self.logo_path = self.personality_package_path / "assets" / "logo.png" + if self.logo_path.is_file(): + self._logo = Image.open(self.logo_path) + + # Get the assets folder path + self.assets_path = self.personality_package_path / "assets" + # Get the scripts folder path + self.scripts_path = self.personality_package_path / "scripts" + + # If not exist recreate + self.assets_path.mkdir(parents=True, exist_ok=True) + + # If not exist recreate + self.scripts_path.mkdir(parents=True, exist_ok=True) + + + if self.run_scripts: + #If it has an install script then execute it. + install_file_name = "install.py" + self.install_script_path = self.scripts_path / install_file_name + if self.install_script_path.exists(): + module_name = install_file_name[:-3] # Remove the ".py" extension + module_spec = importlib.util.spec_from_file_location(module_name, str(self.install_script_path)) + module = importlib.util.module_from_spec(module_spec) + module_spec.loader.exec_module(module) + if hasattr(module, "Install"): + self._install = module.Install(self, force_reinstall=self.force_reinstall) + else: + self._install = None + + #Install requirements + for entry in self._dependencies: + if not is_package_installed(entry): + install_package(entry) + + # Search for any processor code + processor_file_name = "processor.py" + self.processor_script_path = self.scripts_path / processor_file_name + if self.processor_script_path.exists(): + module_name = processor_file_name[:-3] # Remove the ".py" extension + module_spec = importlib.util.spec_from_file_location(module_name, str(self.processor_script_path)) + module = importlib.util.module_from_spec(module_spec) + module_spec.loader.exec_module(module) + if hasattr(module, "Processor"): + self._processor = module.Processor(self) + else: + self._processor = None + else: + self._processor = None + # Get a list of all files in the assets folder + contents = [str(file) for file in self.assets_path.iterdir() if file.is_file()] + + self._assets_list = contents + return config + + def save_personality(self, package_path=None): + """ + Save the personality parameters to a YAML configuration file. + + Args: + package_path (str or Path): The path to the package directory. + """ + if package_path is None: + package_path = self.personality_package_path + else: + package_path = Path(package_path) + + # Building output path + config_file = package_path / "config.yaml" + assets_folder = package_path / "assets" + + # Create assets folder if it doesn't exist + if not assets_folder.exists(): + assets_folder.mkdir(exist_ok=True, parents=True) + + # Create the configuration dictionary + config = { + "author": self._author, + "version": self._version, + "name": self._name, + "user_name": self._user_name, + "language": self._language, + "category": self._category, + "personality_description": self._personality_description, + "personality_conditioning": self._personality_conditioning, + "welcome_message": self._welcome_message, + "include_welcome_message_in_disucssion": self._include_welcome_message_in_disucssion, + "user_message_prefix": self._user_message_prefix, + "link_text": self._link_text, + "ai_message_prefix": self._ai_message_prefix, + "anti_prompts": self._anti_prompts, + "dependencies": self._dependencies, + "disclaimer": self._disclaimer, + "model_temperature": self._model_temperature, + "model_n_predicts": self._model_n_predicts, + "model_top_k": self._model_top_k, + "model_top_p": self._model_top_p, + "model_repeat_penalty": self._model_repeat_penalty, + "model_repeat_last_n": self._model_repeat_last_n + } + + # Save the configuration to the YAML file + with open(config_file, "w") as f: + yaml.dump(config, f) + + + + def as_dict(self): + """ + Convert the personality parameters to a dictionary. + + Returns: + dict: The personality parameters as a dictionary. + """ + return { + "author": self._author, + "version": self._version, + "name": self._name, + "user_name": self._user_name, + "language": self._language, + "category": self._category, + "personality_description": self._personality_description, + "personality_conditioning": self._personality_conditioning, + "welcome_message": self._welcome_message, + "include_welcome_message_in_disucssion": self._include_welcome_message_in_disucssion, + "user_message_prefix": self._user_message_prefix, + "link_text": self._link_text, + "ai_message_prefix": self._ai_message_prefix, + "anti_prompts": self._anti_prompts, + "dependencies": self._dependencies, + "disclaimer": self._disclaimer, + "model_temperature": self._model_temperature, + "model_n_predicts": self._model_n_predicts, + "model_top_k": self._model_top_k, + "model_top_p": self._model_top_p, + "model_repeat_penalty": self._model_repeat_penalty, + "model_repeat_last_n": self._model_repeat_last_n, + "assets_list":self._assets_list + } + + # ========================================== Properties =========================================== + @property + def logo(self): + """ + Get the personality logo. + + Returns: + PIL.Image.Image: The personality logo as a Pillow Image object. + """ + if hasattr(self, '_logo'): + return self._logo + else: + return None + @property + def version(self): + """Get the version of the package.""" + return self._version + + @version.setter + def version(self, value): + """Set the version of the package.""" + self._version = value + + @property + def author(self): + """Get the author of the package.""" + return self._author + + @author.setter + def author(self, value): + """Set the author of the package.""" + self._author = value + + @property + def name(self) -> str: + """Get the name.""" + return self._name + + @name.setter + def name(self, value: str): + """Set the name.""" + self._name = value + + @property + def user_name(self) -> str: + """Get the user name.""" + return self._user_name + + @user_name.setter + def user_name(self, value: str): + """Set the user name.""" + self._user_name = value + + @property + def language(self) -> str: + """Get the language.""" + return self._language + + @language.setter + def language(self, value: str): + """Set the language.""" + self._language = value + + @property + def category(self) -> str: + """Get the category.""" + return self._category + + @category.setter + def category(self, value: str): + """Set the category.""" + self._category = value + + @property + def personality_description(self) -> str: + """ + Getter for the personality description. + + Returns: + str: The personality description of the AI assistant. + """ + return self._personality_description + + @personality_description.setter + def personality_description(self, description: str): + """ + Setter for the personality description. + + Args: + description (str): The new personality description for the AI assistant. + """ + self._personality_description = description + + @property + def personality_conditioning(self) -> str: + """ + Getter for the personality conditioning. + + Returns: + str: The personality conditioning of the AI assistant. + """ + return self.replace_keys(self._personality_conditioning, self.Conditionning_commands) + + @personality_conditioning.setter + def personality_conditioning(self, conditioning: str): + """ + Setter for the personality conditioning. + + Args: + conditioning (str): The new personality conditioning for the AI assistant. + """ + self._personality_conditioning = conditioning + + @property + def welcome_message(self) -> str: + """ + Getter for the welcome message. + + Returns: + str: The welcome message of the AI assistant. + """ + return self.replace_keys(self._welcome_message, self.Conditionning_commands) + + @welcome_message.setter + def welcome_message(self, message: str): + """ + Setter for the welcome message. + + Args: + message (str): The new welcome message for the AI assistant. + """ + self._welcome_message = message + + @property + def include_welcome_message_in_disucssion(self) -> bool: + """ + Getter for the include welcome message in disucssion. + + Returns: + bool: whether to add the welcome message to tje discussion or not. + """ + return self._include_welcome_message_in_disucssion + + @include_welcome_message_in_disucssion.setter + def include_welcome_message_in_disucssion(self, message: bool): + """ + Setter for the welcome message. + + Args: + message (str): The new welcome message for the AI assistant. + """ + self._include_welcome_message_in_disucssion = message + + + @property + def user_message_prefix(self) -> str: + """ + Getter for the user message prefix. + + Returns: + str: The user message prefix of the AI assistant. + """ + return self._user_message_prefix + + @user_message_prefix.setter + def user_message_prefix(self, prefix: str): + """ + Setter for the user message prefix. + + Args: + prefix (str): The new user message prefix for the AI assistant. + """ + self._user_message_prefix = prefix + + @property + def link_text(self) -> str: + """ + Getter for the link text. + + Returns: + str: The link text of the AI assistant. + """ + return self._link_text + + @link_text.setter + def link_text(self, text: str): + """ + Setter for the link text. + + Args: + text (str): The new link text for the AI assistant. + """ + self._link_text = text + @property + def ai_message_prefix(self): + """ + Get the AI message prefix. + + Returns: + str: The AI message prefix. + """ + return self._ai_message_prefix + + @ai_message_prefix.setter + def ai_message_prefix(self, prefix): + """ + Set the AI message prefix. + + Args: + prefix (str): The AI message prefix to set. + """ + self._ai_message_prefix = prefix + + @property + def anti_prompts(self): + """ + Get the anti-prompts list. + + Returns: + list: The anti-prompts list. + """ + return self._anti_prompts + + @anti_prompts.setter + def anti_prompts(self, prompts): + """ + Set the anti-prompts list. + + Args: + prompts (list): The anti-prompts list to set. + """ + self._anti_prompts = prompts + + + @property + def dependencies(self) -> List[str]: + """Getter method for the dependencies attribute. + + Returns: + List[str]: The list of dependencies. + """ + return self._dependencies + + @dependencies.setter + def dependencies(self, dependencies: List[str]): + """Setter method for the dependencies attribute. + + Args: + dependencies (List[str]): The list of dependencies. + """ + self._dependencies = dependencies + + @property + def disclaimer(self) -> str: + """Getter method for the disclaimer attribute. + + Returns: + str: The disclaimer text. + """ + return self._disclaimer + + @disclaimer.setter + def disclaimer(self, disclaimer: str): + """Setter method for the disclaimer attribute. + + Args: + disclaimer (str): The disclaimer text. + """ + self._disclaimer = disclaimer + + @property + def model_temperature(self) -> float: + """Get the model's temperature.""" + return self._model_temperature + + @model_temperature.setter + def model_temperature(self, value: float): + """Set the model's temperature. + + Args: + value (float): The new temperature value. + """ + self._model_temperature = value + + @property + def model_n_predicts(self) -> int: + """Get the number of predictions the model generates.""" + return self._model_n_predicts + + @model_n_predicts.setter + def model_n_predicts(self, value: int): + """Set the number of predictions the model generates. + + Args: + value (int): The new number of predictions value. + """ + self._model_n_predicts = value + + @property + def model_top_k(self) -> int: + """Get the model's top-k value.""" + return self._model_top_k + + @model_top_k.setter + def model_top_k(self, value: int): + """Set the model's top-k value. + + Args: + value (int): The new top-k value. + """ + self._model_top_k = value + + @property + def model_top_p(self) -> float: + """Get the model's top-p value.""" + return self._model_top_p + + @model_top_p.setter + def model_top_p(self, value: float): + """Set the model's top-p value. + + Args: + value (float): The new top-p value. + """ + self._model_top_p = value + + @property + def model_repeat_penalty(self) -> float: + """Get the model's repeat penalty value.""" + return self._model_repeat_penalty + + @model_repeat_penalty.setter + def model_repeat_penalty(self, value: float): + """Set the model's repeat penalty value. + + Args: + value (float): The new repeat penalty value. + """ + self._model_repeat_penalty = value + + @property + def model_repeat_last_n(self) -> int: + """Get the number of words to consider for repeat penalty.""" + return self._model_repeat_last_n + + @model_repeat_last_n.setter + def model_repeat_last_n(self, value: int): + """Set the number of words to consider for repeat penalty. + + Args: + value (int): The new number of words value. + """ + self._model_repeat_last_n = value + + + @property + def assets_list(self) -> list: + """Get the number of words to consider for repeat penalty.""" + return self._assets_list + + @assets_list.setter + def assets_list(self, value: list): + """Set the number of words to consider for repeat penalty. + + Args: + value (int): The new number of words value. + """ + self._assets_list = value + + @property + def processor(self) -> APScript: + """Get the number of words to consider for repeat penalty.""" + return self._processor + + @processor.setter + def processor(self, value: APScript): + """Set the number of words to consider for repeat penalty. + + Args: + value (int): The new number of words value. + """ + self._processor = value + + + @property + def processor_cfg(self) -> list: + """Get the number of words to consider for repeat penalty.""" + return self._processor_cfg + + @processor_cfg.setter + def processor_cfg(self, value: dict): + """Set the number of words to consider for repeat penalty. + + Args: + value (int): The new number of words value. + """ + self._processor_cfg = value + + # ========================================== Helper methods ========================================== + def detect_antiprompt(self, text:str) -> bool: + """ + Detects if any of the antiprompts in self.anti_prompts are present in the given text. + Used for the Hallucination suppression system + + Args: + text (str): The text to check for antiprompts. + + Returns: + bool: True if any antiprompt is found in the text (ignoring case), False otherwise. + """ + for prompt in self.anti_prompts: + if prompt.lower() in text.lower(): + return prompt.lower() + return None + + + # Helper functions + @staticmethod + def replace_keys(input_string, replacements): + """ + Replaces all occurrences of keys in the input string with their corresponding + values from the replacements dictionary. + + Args: + input_string (str): The input string to replace keys in. + replacements (dict): A dictionary of key-value pairs, where the key is the + string to be replaced and the value is the replacement string. + + Returns: + str: The input string with all occurrences of keys replaced by their + corresponding values. + """ + pattern = r"\{\{(\w+)\}\}" + # The pattern matches "{{key}}" and captures "key" in a group. + # The "\w+" matches one or more word characters (letters, digits, or underscore). + + def replace(match): + key = match.group(1) + return replacements.get(key, match.group(0)) + + output_string = re.sub(pattern, replace, input_string) + return output_string + diff --git a/lollms/server.py b/lollms/server.py new file mode 100644 index 0000000..5568e1e --- /dev/null +++ b/lollms/server.py @@ -0,0 +1,457 @@ +from flask import Flask, render_template, request +from flask_socketio import SocketIO, emit +from flask_cors import CORS +from lollms.personality import AIPersonality, MSG_TYPE +from lollms.binding import LOLLMSConfig, LLMBinding +from lollms.helpers import ASCIIColors +from lollms.console import MainMenu +from lollms.paths import LollmsPaths +from lollms.console import MainMenu +from lollms import BindingBuilder, ModelBuilder, PersonalityBuilder +from typing import List, Tuple +import importlib +from pathlib import Path +import argparse +import logging +import shutil +import yaml +import copy + +class LoLLMsServer: + def __init__(self): + self.app = Flask("LoLLMsServer_Server") + #self.app.config['SECRET_KEY'] = 'lollmssecret' + CORS(self.app) # Enable CORS for all routes + self.socketio = SocketIO(self.app, cors_allowed_origins='*') + self.clients = {} + self.current_binding = None + self.current_model = None + self.personalities = [] + self.answer = [''] + + + + self.lollms_paths = LollmsPaths.find_paths(force_local=False) + self.menu = MainMenu(self) + + # Set log level to warning + self.app.logger.setLevel(logging.WARNING) + # Configure a custom logger for Flask-SocketIO + self.socketio_log = logging.getLogger('socketio') + self.socketio_log.setLevel(logging.WARNING) + self.socketio_log.addHandler(logging.StreamHandler()) + + self.initialize_routes() + self.run() + + + def load_binding(self): + if self.config.binding_name is None: + print(f"No bounding selected") + print("Please select a valid model or install a new one from a url") + self.menu.select_binding() + # cfg.download_model(url) + else: + try: + self.binding_class = BindingBuilder().build_binding(self.lollms_paths.bindings_zoo_path, self.config) + except Exception as ex: + print(ex) + print(f"Couldn't find binding. Please verify your configuration file at {self.config.file_path} or use the next menu to select a valid binding") + self.menu.select_binding() + + def load_model(self): + try: + self.model = ModelBuilder(self.binding_class, self.config).get_model() + except Exception as ex: + ASCIIColors.error(f"Couldn't load model.") + ASCIIColors.error(f"Binding returned this exception : {ex}") + ASCIIColors.error(f"{self.config.get_model_path_infos()}") + print("Please select a valid model or install a new one from a url") + self.menu.select_model() + + def load_personality(self): + try: + self.personality = PersonalityBuilder(self.lollms_paths, self.config, self.model).build_personality() + except Exception as ex: + ASCIIColors.error(f"Couldn't load personality.") + ASCIIColors.error(f"Binding returned this exception : {ex}") + ASCIIColors.error(f"{self.config.get_personality_path_infos()}") + print("Please select a valid model or install a new one from a url") + self.menu.select_model() + self.cond_tk = self.personality.model.tokenize(self.personality.personality_conditioning) + self.n_cond_tk = len(self.cond_tk) + + def initialize_routes(self): + @self.socketio.on('connect') + def handle_connect(): + client_id = request.sid + self.clients[client_id] = {"namespace": request.namespace, "full_discussion_blocks": []} + ASCIIColors.success(f'Client connected with session ID: {client_id}') + + @self.socketio.on('disconnect') + def handle_disconnect(): + client_id = request.sid + if client_id in self.clients: + del self.clients[client_id] + print(f'Client disconnected with session ID: {client_id}') + + + @self.socketio.on('list_available_bindings') + def handle_list_bindings(): + binding_infs = [] + for p in self.bindings_path.iterdir(): + if p.is_dir(): + with open(p/"binding_card.yaml", "r") as f: + card = yaml.safe_load(f) + with open(p/"models.yaml", "r") as f: + models = yaml.safe_load(f) + entry={ + "name":p.name, + "card":card, + "models":models + } + binding_infs.append(entry) + + emit('bindings_list', {'success':True, 'bindings': binding_infs}, room=request.sid) + + @self.socketio.on('list_available_personalities') + def handle_list_available_personalities(): + personalities_folder = self.personalities_path + personalities = {} + for language_folder in personalities_folder.iterdir(): + if language_folder.is_dir(): + personalities[language_folder.name] = {} + for category_folder in language_folder.iterdir(): + if category_folder.is_dir(): + personalities[language_folder.name][category_folder.name] = [] + for personality_folder in category_folder.iterdir(): + if personality_folder.is_dir(): + try: + personality_info = {"folder":personality_folder.stem} + config_path = personality_folder / 'config.yaml' + with open(config_path) as config_file: + config_data = yaml.load(config_file, Loader=yaml.FullLoader) + personality_info['name'] = config_data.get('name',"No Name") + personality_info['description'] = config_data.get('personality_description',"") + personality_info['author'] = config_data.get('author', 'ParisNeo') + personality_info['version'] = config_data.get('version', '1.0.0') + scripts_path = personality_folder / 'scripts' + personality_info['has_scripts'] = scripts_path.is_dir() + assets_path = personality_folder / 'assets' + gif_logo_path = assets_path / 'logo.gif' + webp_logo_path = assets_path / 'logo.webp' + png_logo_path = assets_path / 'logo.png' + jpg_logo_path = assets_path / 'logo.jpg' + jpeg_logo_path = assets_path / 'logo.jpeg' + bmp_logo_path = assets_path / 'logo.bmp' + + personality_info['has_logo'] = png_logo_path.is_file() or gif_logo_path.is_file() + + if gif_logo_path.exists(): + personality_info['avatar'] = str(gif_logo_path).replace("\\","/") + elif webp_logo_path.exists(): + personality_info['avatar'] = str(webp_logo_path).replace("\\","/") + elif png_logo_path.exists(): + personality_info['avatar'] = str(png_logo_path).replace("\\","/") + elif jpg_logo_path.exists(): + personality_info['avatar'] = str(jpg_logo_path).replace("\\","/") + elif jpeg_logo_path.exists(): + personality_info['avatar'] = str(jpeg_logo_path).replace("\\","/") + elif bmp_logo_path.exists(): + personality_info['avatar'] = str(bmp_logo_path).replace("\\","/") + else: + personality_info['avatar'] = "" + personalities[language_folder.name][category_folder.name].append(personality_info) + except Exception as ex: + print(f"Couldn't load personality from {personality_folder} [{ex}]") + emit('personalities_list', {'personalities': personalities}, room=request.sid) + + @self.socketio.on('list_available_models') + def handle_list_available_models(): + """List the available models + + Returns: + _type_: _description_ + """ + if self.binding_class is None: + emit('available_models_list', {'success':False, 'error': "No binding selected"}, room=request.sid) + model_list = self.binding_class.get_available_models() + + models = [] + for model in model_list: + try: + filename = model.get('filename',"") + server = model.get('server',"") + image_url = model.get("icon", '/images/default_model.png') + license = model.get("license", 'unknown') + owner = model.get("owner", 'unknown') + owner_link = model.get("owner_link", 'https://github.com/ParisNeo') + filesize = int(model.get('filesize',0)) + description = model.get('description',"") + model_type = model.get("model_type","") + if server.endswith("/"): + path = f'{server}{filename}' + else: + path = f'{server}/{filename}' + local_path = self.models_path/f'{self.config["binding_name"]}/{filename}' + is_installed = local_path.exists() or model_type.lower()=="api" + models.append({ + 'title': filename, + 'icon': image_url, # Replace with the path to the model icon + 'license': license, + 'owner': owner, + 'owner_link': owner_link, + 'description': description, + 'isInstalled': is_installed, + 'path': path, + 'filesize': filesize, + 'model_type': model_type + }) + except Exception as ex: + print("#################################") + print(ex) + print("#################################") + print(f"Problem with model : {model}") + emit('available_models_list', {'success':True, 'available_models': models}, room=request.sid) + + @self.socketio.on('list_available_personalities_languages') + def handle_list_available_personalities_languages(): + try: + languages = [l for l in self.personalities_path.iterdir()] + emit('available_personalities_languages_list', {'success': True, 'available_personalities_languages': languages}) + except Exception as ex: + emit('available_personalities_languages_list', {'success': False, 'error':str(ex)}) + + @self.socketio.on('list_available_personalities_categories') + def handle_list_available_personalities_categories(data): + try: + language = data["language"] + categories = [l for l in (self.personalities_path/language).iterdir()] + emit('available_personalities_categories_list', {'success': True, 'available_personalities_categories': categories}) + except Exception as ex: + emit('available_personalities_categories_list', {'success': False, 'error':str(ex)}) + + @self.socketio.on('list_available_personalities_names') + def handle_list_available_personalities_names(data): + try: + language = data["language"] + category = data["category"] + personalities = [l for l in (self.personalities_path/language/category).iterdir()] + emit('list_available_personalities_names_list', {'success': True, 'list_available_personalities_names': personalities}) + except Exception as ex: + emit('list_available_personalities_names_list', {'success': False, 'error':str(ex)}) + + @self.socketio.on('select_binding') + def handle_select_binding(data): + self.cp_config = copy.deepcopy(self.config) + self.cp_config["binding_name"] = data['binding_name'] + try: + self.binding_class = self.build_binding(self.bindings_path, self.cp_config) + self.config = self.cp_config + emit('select_binding', {'success':True, 'binding_name': self.cp_config["binding_name"]}, room=request.sid) + except Exception as ex: + print(ex) + emit('select_binding', {'success':False, 'binding_name': self.cp_config["binding_name"], 'error':f"Couldn't load binding:\n{ex}"}, room=request.sid) + + @self.socketio.on('select_model') + def handle_select_model(data): + model_name = data['model_name'] + if self.binding_class is None: + emit('select_model', {'success':False, 'model_name': model_name, 'error':f"Please select a binding first"}, room=request.sid) + return + self.cp_config = copy.deepcopy(self.config) + self.cp_config["model_name"] = data['model_name'] + try: + self.current_model = self.binding_class(self.cp_config) + emit('select_model', {'success':True, 'model_name': model_name}, room=request.sid) + except Exception as ex: + print(ex) + emit('select_model', {'success':False, 'model_name': model_name, 'error':f"Please select a binding first"}, room=request.sid) + + @self.socketio.on('add_personality') + def handle_add_personality(data): + personality_path = data['path'] + try: + personality = AIPersonality(self.lollms_paths, personality_path) + self.personalities.append(personality) + self.config["personalities"].append(personality_path) + emit('personality_added', {'success':True, 'name': personality.name, 'id':len(self.personalities)-1}, room=request.sid) + self.config.save_config() + except Exception as e: + error_message = str(e) + emit('personality_add_failed', {'success':False, 'error': error_message}, room=request.sid) + + + @self.socketio.on('list_active_personalities') + def handle_list_active_personalities(): + personality_names = [p.name for p in self.personalities] + emit('active_personalities_list', {'success':True, 'personalities': personality_names}, room=request.sid) + + @self.socketio.on('activate_personality') + def handle_activate_personality(data): + personality_id = data['id'] + if personality_idLLMBinding: + binding_path = Path(bindings_path) / cfg["binding_name"] + # first find out if there is a requirements.txt file + install_file_name = "install.py" + install_script_path = binding_path / install_file_name + if install_script_path.exists(): + module_name = install_file_name[:-3] # Remove the ".py" extension + module_spec = importlib.util.spec_from_file_location(module_name, str(install_script_path)) + module = importlib.util.module_from_spec(module_spec) + module_spec.loader.exec_module(module) + if hasattr(module, "Install"): + module.Install(self.config) + # define the full absolute path to the module + absolute_path = binding_path.resolve() + # infer the module name from the file path + module_name = binding_path.stem + # use importlib to load the module from the file path + loader = importlib.machinery.SourceFileLoader(module_name, str(absolute_path / "__init__.py")) + binding_module = loader.load_module() + binding_class = getattr(binding_module, binding_module.binding_name) + return binding_class + + + def run(self, host="localhost", port="9600"): + parser = argparse.ArgumentParser() + parser.add_argument('--host', '-hst', default=host, help='Host name') + parser.add_argument('--port', '-prt', default=port, help='Port number') + + parser.add_argument('--config', '-cfg', default=None, help='Path to the configuration file') + parser.add_argument('--bindings_path', '-bp', default=str(self.lollms_paths.bindings_zoo_path), + help='The path to the Bindings folder') + parser.add_argument('--personalities_path', '-pp', + default=str(self.lollms_paths.personalities_zoo_path), + help='The path to the personalities folder') + parser.add_argument('--models_path', '-mp', default=str(self.lollms_paths.personal_models_path), + help='The path to the models folder') + + parser.add_argument('--binding_name', '-b', default="llama_cpp_official", + help='Binding to be used by default') + parser.add_argument('--model_name', '-m', default=None, + help='Model name') + parser.add_argument('--personality_full_name', '-p', default="personality", + help='Personality path relative to the personalities folder (language/category/name)') + + args = parser.parse_args() + + # Configuration loading part + self.config = LOLLMSConfig.autoload(self.lollms_paths, args.config) + + if args.binding_name: + self.config.binding_name = args.binding_name + + if args.model_name: + self.config.model_name = args.model_name + + # Recover bindings path + self.personalities_path = Path(args.personalities_path) + self.bindings_path = Path(args.bindings_path) + self.models_path = Path(args.models_path) + if self.config.binding_name is None: + self.menu.select_binding() + else: + self.binding_class = self.build_binding(self.bindings_path, self.config) + if self.config.model_name is None: + self.menu.select_model() + else: + try: + self.current_model = self.binding_class(self.config) + except Exception as ex: + print(f"{ASCIIColors.color_red}Couldn't load model Please select a valid model{ASCIIColors.color_reset}") + print(f"{ASCIIColors.color_red}{ex}{ASCIIColors.color_reset}") + self.menu.select_model() + + for p in self.config.personalities: + personality = AIPersonality(self.lollms_paths, self.config.lollms_paths.personalities_zoo_path/p, self.current_model) + self.personalities.append(personality) + + self.active_personality = self.personalities[self.config.active_personality_id] + + self.menu.show_logo() + print(f"{ASCIIColors.color_red}Current personality : {ASCIIColors.color_reset}{self.active_personality}") + print("running...") + + self.socketio.run(self.app, host=args.host, port=args.port) + +def main(): + LoLLMsServer() + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/lollms/settings.py b/lollms/settings.py new file mode 100644 index 0000000..7b39699 --- /dev/null +++ b/lollms/settings.py @@ -0,0 +1,265 @@ +from lollms.personality import AIPersonality, MSG_TYPE +from lollms.binding import LOLLMSConfig, LLMBinding +from lollms.helpers import ASCIIColors +from lollms.paths import LollmsPaths +import shutil +import yaml +import importlib +from pathlib import Path +import sys +import pkg_resources +import argparse +from tqdm import tqdm +from lollms import BindingBuilder, ModelBuilder, PersonalityBuilder +from lollms.console import MainMenu + +class Settings: + def __init__( + self, + configuration_path:str|Path=None, + show_logo:bool=True, + show_commands_list:bool=False, + show_personality_infos:bool=True, + show_model_infos:bool=True, + show_welcome_message:bool=True + ): + + # Fore it to be a path + self.is_logging = False + self.log_file_path = "" + + self.bot_says = "" + # get paths + self.lollms_paths = LollmsPaths.find_paths(force_local=False) + + # Build menu + self.menu = MainMenu(self) + + # Change configuration + original = self.lollms_paths.default_cfg_path + if configuration_path is None: + local = self.lollms_paths.personal_configuration_path / "local_config.yaml" + else: + local = Path(configuration_path) + + if not local.exists(): + shutil.copy(original, local) + self.cfg_path = local + + self.config = LOLLMSConfig(self.cfg_path) + # load binding + self.load_binding() + + # Load model + self.load_model() + # cfg.binding_name = llm_binding.binding_folder_name + # cfg.model_name = model_name + + # Load personality + try: + self.load_personality() + except Exception as ex: + print(f"No personality selected. Please select one from the zoo. {ex}") + self.menu.select_personality() + + if show_logo: + self.menu.show_logo() + if show_commands_list: + self.menu.show_commands_list() + + if show_personality_infos: + print() + print(f"{ASCIIColors.color_green}Current personality : {ASCIIColors.color_reset}{self.personality}") + print(f"{ASCIIColors.color_green}Version : {ASCIIColors.color_reset}{self.personality.version}") + print(f"{ASCIIColors.color_green}Author : {ASCIIColors.color_reset}{self.personality.author}") + print(f"{ASCIIColors.color_green}Description : {ASCIIColors.color_reset}{self.personality.personality_description}") + print() + + if show_model_infos: + print() + print(f"{ASCIIColors.color_green}Current binding : {ASCIIColors.color_reset}{self.config['binding_name']}") + print(f"{ASCIIColors.color_green}Current model : {ASCIIColors.color_reset}{self.config['model_name']}") + print() + + + # If there is a disclaimer, show it + if self.personality.disclaimer != "": + print(f"\n{ASCIIColors.color_red}Disclaimer") + print(self.personality.disclaimer) + print(f"{ASCIIColors.color_reset}") + + if show_welcome_message and self.personality.welcome_message: + print(self.personality.name+": ", end="") + print(self.personality.welcome_message) + + self.menu.main_menu() + + def ask_override_file(self): + user_input = input("Would you like to override the existing file? (Y/N): ") + user_input = user_input.lower() + if user_input == "y" or user_input == "yes": + print("File will be overridden.") + return True + elif user_input == "n" or user_input == "no": + print("File will not be overridden.") + return False + else: + print("Invalid input. Please enter 'Y' or 'N'.") + # Call the function again recursively to prompt the user for valid input + return self.ask_override_file() + + def start_log(self, file_name): + if Path(file_name).is_absolute(): + self.log_file_path = Path(file_name) + else: + home_dir = Path.home()/"Documents/lollms/logs" + home_dir.mkdir(parents=True, exist_ok=True) + self.log_file_path = home_dir/file_name + if self.log_file_path.exists(): + if not self.ask_override_file(): + print("Canceled") + return + try: + with(open(self.log_file_path, "w") as f): + self.header = f"""------------------------ +Log file for lollms discussion +Participating personalities: +{self.config['personalities']} +------------------------ +""" + f.write(self.header) + self.is_logging = True + return True + except: + return False + + def log(self, text, append=False): + try: + with(open(self.log_file_path, "a" if append else "w") as f): + f.write(text) if append else f.write(self.header+self.personality.personality_conditioning+text) + return True + except: + return False + + def stop_log(self): + self.is_logging = False + + + + def load_binding(self): + if self.config.binding_name is None: + print(f"No bounding selected") + print("Please select a valid model or install a new one from a url") + self.menu.select_binding() + # cfg.download_model(url) + else: + try: + self.binding_class = BindingBuilder().build_binding(self.lollms_paths.bindings_zoo_path, self.config) + except Exception as ex: + print(ex) + print(f"Couldn't find binding. Please verify your configuration file at {self.cfg_path} or use the next menu to select a valid binding") + self.menu.select_binding() + + def load_model(self): + try: + self.model = ModelBuilder(self.binding_class, self.config).get_model() + except Exception as ex: + ASCIIColors.error(f"Couldn't load model. Please verify your configuration file at {self.cfg_path} or use the next menu to select a valid model") + ASCIIColors.error(f"Binding returned this exception : {ex}") + ASCIIColors.error(f"{self.config.get_model_path_infos()}") + print("Please select a valid model or install a new one from a url") + self.menu.select_model() + + + def load_personality(self): + try: + self.personality = PersonalityBuilder(self.lollms_paths, self.config, self.model).build_personality() + except Exception as ex: + ASCIIColors.error(f"Couldn't load personality. Please verify your configuration file at {self.cfg_path} or use the next menu to select a valid personality") + ASCIIColors.error(f"Binding returned this exception : {ex}") + ASCIIColors.error(f"{self.config.get_personality_path_infos()}") + print("Please select a valid model or install a new one from a url") + self.menu.select_model() + self.cond_tk = self.personality.model.tokenize(self.personality.personality_conditioning) + self.n_cond_tk = len(self.cond_tk) + + def reset_context(self): + if self.personality.include_welcome_message_in_disucssion: + full_discussion = ( + self.personality.ai_message_prefix + + self.personality.welcome_message + + self.personality.link_text + ) + else: + full_discussion = "" + return full_discussion + + def safe_generate(self, full_discussion:str, n_predict=None, callback=None): + """safe_generate + + Args: + full_discussion (string): A prompt or a long discussion to use for generation + callback (_type_, optional): A callback to call for each received token. Defaults to None. + + Returns: + str: Model output + """ + if n_predict == None: + n_predict =self.personality.model_n_predicts + tk = self.personality.model.tokenize(full_discussion) + n_tokens = len(tk) + fd = self.personality.model.detokenize(tk[-min(self.config.ctx_size-self.n_cond_tk,n_tokens):]) + self.bot_says = "" + output = self.personality.model.generate(self.personality.personality_conditioning+fd, n_predict=n_predict, callback=callback) + return output + + def remove_text_from_string(self, string, text_to_find): + """ + Removes everything from the first occurrence of the specified text in the string (case-insensitive). + + Parameters: + string (str): The original string. + text_to_find (str): The text to find in the string. + + Returns: + str: The updated string. + """ + index = string.lower().find(text_to_find.lower()) + + if index != -1: + string = string[:index] + + return string + +def main(): + # Create the argument parser + parser = argparse.ArgumentParser(description='App Description') + + # Add the configuration path argument + parser.add_argument('--configuration_path', default=None, + help='Path to the configuration file') + + parser.add_argument('--reset_personal_path', action='store_true', help='Reset the personal path') + parser.add_argument('--reset_config', action='store_true', help='Reset the configurations') + + # Parse the command-line arguments + args = parser.parse_args() + + if args.reset_personal_path: + LollmsPaths.reset_configs() + + if args.reset_config: + cfg_path = LollmsPaths.find_paths().personal_configuration_path / "local_config.yaml" + try: + cfg_path.unlink() + ASCIIColors.success("LOLLMS configuration reset successfully") + except: + ASCIIColors.success("Couldn't reset LOLLMS configuration") + + configuration_path = args.configuration_path + + Settings(configuration_path=configuration_path, show_commands_list=True) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..5ff395b --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +tqdm +pyyaml +Pillow +flask +flask_socketio +flask-cors +simple-websocket \ No newline at end of file diff --git a/requirements_dev.txt b/requirements_dev.txt new file mode 100644 index 0000000..5ff395b --- /dev/null +++ b/requirements_dev.txt @@ -0,0 +1,7 @@ +tqdm +pyyaml +Pillow +flask +flask_socketio +flask-cors +simple-websocket \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..82e63bf --- /dev/null +++ b/setup.py @@ -0,0 +1,52 @@ +from pathlib import Path +from typing import Union + +import setuptools + +with open("README.md", "r") as fh: + long_description = fh.read() + + +def read_requirements(path: Union[str, Path]): + with open(path, "r") as file: + return file.read().splitlines() + + +requirements = read_requirements("requirements.txt") +requirements_dev = read_requirements("requirements_dev.txt") + +def get_all_files(path): + path = Path(path) + file_list = [] + for file_path in path.rglob('*'): + if file_path.is_file(): + if file_path.name != "__pycache__" and file_path.suffix !=".pyc" and file_path.name!="local_config.yaml" and file_path.name!=".installed" and file_path.name!=".git" and file_path.name!=".gitignore": + file_list.append("/".join(str(file_path).replace("\\","/").split("/")[1:])) + return file_list + +setuptools.setup( + name="lollms", + version="1.1.60", + author="Saifeddine ALOUI", + author_email="aloui.saifeddine@gmail.com", + description="A python library for AI personality definition", + long_description=long_description, + long_description_content_type="text/markdown", + url="https://github.com/ParisNeo/lollms", + packages=setuptools.find_packages(), + include_package_data=True, + install_requires=requirements, + entry_points={ + 'console_scripts': [ + 'lollms-server = lollms.server:main', + 'lollms-console = lollms.console:main', + 'lollms-settings = lollms.settings:main', + ], + }, + extras_require={"dev": requirements_dev}, + classifiers=[ + "Programming Language :: Python :: 3.8", + "License :: OSI Approved :: Apache Software License", + "Operating System :: OS Independent", + ], +) diff --git a/train/.gitignore b/train/.gitignore new file mode 100644 index 0000000..883b4b2 --- /dev/null +++ b/train/.gitignore @@ -0,0 +1,2 @@ +output +!output/.keep \ No newline at end of file diff --git a/train/configs/deepspeed/ds_config.yaml b/train/configs/deepspeed/ds_config.yaml new file mode 100644 index 0000000..6c04bd4 --- /dev/null +++ b/train/configs/deepspeed/ds_config.yaml @@ -0,0 +1,48 @@ +{ + "train_batch_size": "auto", + "gradient_accumulation_steps": "auto", + "train_micro_batch_size_per_gpu": "auto", + "fp16": { + "enabled": "auto", + "min_loss_scale": 1, + "loss_scale_window": 1000, + "hysteresis": 2, + "initial_scale_power": 32 + }, + "bf16": { + "enabled": "auto" + }, + "gradient_clipping": 1, + "zero_optimization": { + "stage": 2, + "offload_param": { + "device": "none" + }, + "offload_optimizer": { + "device": "none" + }, + "allgather_partitions": true, + "allgather_bucket_size": 5e8, + "contiguous_gradients": true + }, + "optimizer": { + "type": "AdamW", + "params": { + "lr": "auto", + "betas": [ + 0.9, + 0.999 + ], + "eps": 1e-08 + } + }, + "scheduler": { + "type": "WarmupLR", + "params": { + "warmup_min_lr": 0, + "warmup_max_lr": "auto", + "warmup_num_steps": "auto", + "warmup_type": "linear" + } + } + } \ No newline at end of file diff --git a/train/configs/train/finetune.yaml b/train/configs/train/finetune.yaml new file mode 100644 index 0000000..12fc492 --- /dev/null +++ b/train/configs/train/finetune.yaml @@ -0,0 +1,29 @@ +# model/tokenizer +model_name: # add model here +tokenizer_name: # add model here +gradient_checkpointing: true +save_name: # CHANGE + +# dataset +streaming: false +num_proc: 64 +dataset_path: # update +max_length: 1024 +batch_size: 32 + +# train dynamics +lr: 5.0e-5 +eval_every: 800 +eval_steps: 100 +save_every: 800 +output_dir: # CHANGE +checkpoint: null +lora: false +warmup_steps: 100 +num_epochs: 2 + +# logging +wandb: true +wandb_entity: # update +wandb_project_name: # update +seed: 42 diff --git a/train/configs/train/finetune_lora.yaml b/train/configs/train/finetune_lora.yaml new file mode 100644 index 0000000..e316fb1 --- /dev/null +++ b/train/configs/train/finetune_lora.yaml @@ -0,0 +1,31 @@ +# model/tokenizer +model_name: # update +tokenizer_name: # update +gradient_checkpointing: false +save_name: # CHANGE + +# dataset +streaming: false +num_proc: 64 +dataset_path: # CHANGE +max_length: 1024 +batch_size: 4 + +# train dynamics +lr: 5.0e-5 +min_lr: 0 +weight_decay: 0.0 +eval_every: 2000 +eval_steps: 100 +save_every: 2000 +output_dir: # CHANGE +checkpoint: null +lora: true +warmup_steps: 100 +num_epochs: 2 + +# logging +wandb: true +wandb_entity: # update +wandb_project_name: # update +seed: 42 diff --git a/train/configs/train/finetune_lora_ airoboros-7b-gpt4.yaml b/train/configs/train/finetune_lora_ airoboros-7b-gpt4.yaml new file mode 100644 index 0000000..5719a51 --- /dev/null +++ b/train/configs/train/finetune_lora_ airoboros-7b-gpt4.yaml @@ -0,0 +1,31 @@ +# model/tokenizer +model_name: jondurbin/airoboros-7b-gpt4 # update +tokenizer_name: jondurbin/airoboros-7b-gpt4 # update +gradient_checkpointing: false +save_name: parisneo-7b_gpt42_lora # CHANGE + +# dataset +streaming: false +num_proc: 64 +dataset_path: # CHANGE +max_length: 1024 +batch_size: 4 + +# train dynamics +lr: 5.0e-5 +min_lr: 0 +weight_decay: 0.0 +eval_every: 2000 +eval_steps: 100 +save_every: 2000 +output_dir: output # CHANGE +checkpoint: null +lora: true +warmup_steps: 100 +num_epochs: 2 + +# logging +wandb: false # update if you want to use weights and biases +wandb_entity: # update +wandb_project_name: # update +seed: 42 diff --git a/train/requirements.txt b/train/requirements.txt new file mode 100644 index 0000000..b38ab36 --- /dev/null +++ b/train/requirements.txt @@ -0,0 +1,15 @@ +accelerate +datasets +torchmetrics +evaluate +transformers>=4.28.0 +wandb +pip +peft +nodelist-inflator +deepspeed +sentencepiece +jsonlines +nomic +scikit-learn +matplotlib \ No newline at end of file diff --git a/train/train.py b/train/train.py new file mode 100644 index 0000000..7a29ef5 --- /dev/null +++ b/train/train.py @@ -0,0 +1,233 @@ +import os +from transformers import AutoModelForCausalLM, AutoTokenizer, get_scheduler, LlamaForCausalLM +import torch +from torch.optim import AdamW +from argparse import ArgumentParser +from read import read_config +from accelerate import Accelerator +from accelerate.utils import DummyScheduler, DummyOptim, set_seed +from peft import get_peft_model, LoraConfig, TaskType +from data import load_data +from torchmetrics import MeanMetric +from tqdm import tqdm +import wandb + +torch.backends.cuda.matmul.allow_tf32 = True + +def format_metrics(metrics, split, prefix=""): + log = f"[{split}]" + prefix + log += " ".join([f"{key}: {value:.4f}" for key, value in metrics.items()]) + + return log + + +def evaluate(model, val_dataloader): + model.eval() + val_loss = MeanMetric(nan_strategy="error").to(model.device) + + with torch.no_grad(): + for batch in tqdm(val_dataloader): + loss = model(**batch).loss + + loss_values = accelerator.gather_for_metrics({"loss": loss.detach()}) + + val_loss.update(loss_values["loss"]) + + return val_loss + + +def train(accelerator, config): + set_seed(config['seed']) + + accelerator.print(config) + accelerator.print(f"Using {accelerator.num_processes} GPUs") + + tokenizer = AutoTokenizer.from_pretrained(config['tokenizer_name'], model_max_length=config['max_length']) + # if no pad token, set it to eos + if tokenizer.pad_token is None: + tokenizer.pad_token = tokenizer.eos_token + + + with accelerator.main_process_first(): + train_dataloader, val_dataloader = load_data(config, tokenizer) + + + checkpoint = config["gradient_checkpointing"] + model = AutoModelForCausalLM.from_pretrained(config["model_name"], + use_cache=False if checkpoint else True, + trust_remote_code=True) + if checkpoint: + model.gradient_checkpointing_enable() + + if config["lora"]: + peft_config = LoraConfig( + # should R be configurable? + task_type=TaskType.CAUSAL_LM, inference_mode=False, r=8, lora_alpha=32, lora_dropout=0.1 + ) + model = get_peft_model(model, peft_config) + model.print_trainable_parameters() + + optimizer_cls = ( + AdamW + if accelerator.state.deepspeed_plugin is None + or "optimizer" not in accelerator.state.deepspeed_plugin.deepspeed_config + else DummyOptim + ) + + # karpathy doesn't decay embeddding, maybe we should exclude + # https://github.com/karpathy/minGPT/commit/bbbdac74fa9b2e55574d70056163ffbae42310c1#diff-2075fa9c224b395be5bda85544dd36572b59c76c54562819eadadbf268602834R157s + optimizer = optimizer_cls(model.parameters(), lr=config["lr"], weight_decay=config["weight_decay"]) + + if accelerator.state.deepspeed_plugin is not None: + gradient_accumulation_steps = accelerator.state.deepspeed_plugin.deepspeed_config[ + "gradient_accumulation_steps" + ] + + # decay to min_lr instead of 0 + lr_ratio = config["min_lr"] / config["lr"] + accelerator.print(f"Len of train_dataloader: {len(train_dataloader)}") + total_num_steps = (len(train_dataloader) / gradient_accumulation_steps) * config["num_epochs"] + # instead of decaying to zero, decay to ratio of min_lr / lr + total_num_steps += int(total_num_steps * lr_ratio) + config["warmup_steps"] + accelerator.print(f"Total training steps: {total_num_steps}") + + # Creates Dummy Scheduler if `scheduler` was specified in the config file else creates `args.lr_scheduler_type` Scheduler + if ( + accelerator.state.deepspeed_plugin is None + or "scheduler" not in accelerator.state.deepspeed_plugin.deepspeed_config + ): + scheduler = get_scheduler( + name="cosine", + optimizer=optimizer, + num_warmup_steps=config["warmup_steps"] * accelerator.num_processes, + num_training_steps=total_num_steps, + ) + else: + scheduler = DummyScheduler( + optimizer, total_num_steps=config["warmup_steps"], warmup_num_steps=config["warmup_steps"] + ) + + model, optimizer, train_dataloader, val_dataloader, scheduler = accelerator.prepare( + model, optimizer, train_dataloader, val_dataloader, scheduler + ) + + # setup for saving training states in case preemption + accelerator.register_for_checkpointing(scheduler) + + if config["checkpoint"]: + accelerator.load_state(config["checkpoint"]) + accelerator.print(f"Resumed from checkpoint: {config['checkpoint']}") + path = os.path.basename(config["train_args"]["resume_from_checkpoint"]) + training_difference = os.path.splitext(path)[0] + resume_step = int(training_difference.replace("step_", "")) + accelerator.skip_first_batches(train_dataloader, resume_step) + accelerator.print(f"Resuming from step {resume_step}") + + + # log gradients + if accelerator.is_main_process and config["wandb"]: + wandb.watch(model, log_freq=config["log_grads_every"], log="all") + + for epoch in range(config["num_epochs"]): + train_loss = MeanMetric(nan_strategy="error").to(model.device) + for step, batch in enumerate(tqdm(train_dataloader)): + model.train() + outputs = model(**batch) + loss = outputs.loss + + # gather loss before backprop in case of gradient accumulation + loss_values = accelerator.gather_for_metrics({"loss": loss.detach().float()}) + train_loss.update(loss_values["loss"]) + + loss = loss / gradient_accumulation_steps + accelerator.backward(loss) + # get gradient norm of all params + + # log LR in case something weird happens + if step > 0 and step % (config["eval_every"] // 10) == 0: + if config["wandb"]: + curr_step = step + epoch * len(train_dataloader) + accelerator.log({"lr": scheduler.get_last_lr()[0]}, step=curr_step) + + if (step + 1) % gradient_accumulation_steps == 0 or step == len(train_dataloader) - 1: + optimizer.step() + scheduler.step() + optimizer.zero_grad() + + + if step > 0 and step % config["save_every"] == 0: + curr_step = step + epoch * len(train_dataloader) + accelerator.save_state(f"{config['output_dir']}/step_{curr_step}") + + if step > 0 and (step % config["eval_every"] == 0 or step == len(train_dataloader) - 1): + val_loss = evaluate(model, val_dataloader) + + log_train = { + "train_loss": train_loss.compute() + } + log_val = { + "val_loss": val_loss.compute() + } + + if config["wandb"]: + curr_step = step + epoch * len(train_dataloader) + accelerator.log({**log_train, **log_val}, step=curr_step) + + accelerator.print(f"Current LR: {scheduler.get_last_lr()[0]}") + accelerator.print(format_metrics(log_train, "train", f" step {step} ")) + accelerator.print(format_metrics(log_val, "val", f" step {step} ")) + + train_loss.reset() + + accelerator.print(f"Epoch {epoch} finished") + accelerator.print(f"Pushing to HF hub") + accelerator.wait_for_everyone() + unwrapped_model = accelerator.unwrap_model(model) + try: + if accelerator.is_main_process: + unwrapped_model.push_to_hub(config["save_name"] + f"-epoch_{epoch}", private=True) + + except Exception as e: + accelerator.print(e) + accelerator.print(f"Failed to push to hub") + + unwrapped_model.save_pretrained( + f"{config['output_dir']}/epoch_{epoch}", + is_main_process=accelerator.is_main_process, + save_function=accelerator.save, + state_dict=accelerator.get_state_dict(model), + ) + + accelerator.wait_for_everyone() + unwrapped_model = accelerator.unwrap_model(model) + unwrapped_model.save_pretrained( + f"{config['output_dir']}/final", + is_main_process=accelerator.is_main_process, + save_function=accelerator.save, + state_dict=accelerator.get_state_dict(model), + ) + + accelerator.end_training() + + + +if __name__ == "__main__": + # parse arguments by reading in a config + parser = ArgumentParser() + parser.add_argument("--config", type=str, default="config.yaml") + + args = parser.parse_args() + + config = read_config(args.config) + + if config["wandb"]: + accelerator = Accelerator(log_with="wandb") + accelerator.init_trackers( + project_name=config["wandb_project_name"], + config=config, + init_kwargs={"wandb": {"entity": config["wandb_entity"]}}, + ) + else: + accelerator = Accelerator() + + train(accelerator, config=config) \ No newline at end of file