From f78e93a3645e93c49bd8a704cea3dc96c7b3da45 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 25 Jan 2023 10:53:08 -0800 Subject: [PATCH 01/32] Try to prevent title debounce overwriting --- .../components/document-detail/document-detail.component.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src-ui/src/app/components/document-detail/document-detail.component.ts b/src-ui/src/app/components/document-detail/document-detail.component.ts index f99f547e6..19f85398b 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.ts +++ b/src-ui/src/app/components/document-detail/document-detail.component.ts @@ -204,6 +204,10 @@ export class DocumentDetailComponent ) .subscribe({ next: (titleValue) => { + // In the rare case when the field changed just after debounced event was fired. + // We dont want to overwrite whats actually in the text field, so just return + if (titleValue !== this.titleInput.value) return + this.title = titleValue this.documentForm.patchValue({ title: titleValue }) }, From 2801b60b0ef51ad5bb12d69bf50f29a76ac1600d Mon Sep 17 00:00:00 2001 From: clemensrieder <68914047+clemensrieder@users.noreply.github.com> Date: Thu, 26 Jan 2023 16:45:35 +0100 Subject: [PATCH 02/32] Minor updates to development documentation (#2474) * clarify commands by adding paths * fix trailing space in header * rerun pre-commit * one last time :S * update sections, remove duplicate information * those pesky pre-commits ;-) * implement suggestions --- docs/development.md | 327 +++++++++++++++++++++----------------------- docs/setup.md | 7 +- mkdocs.yml | 2 +- 3 files changed, 160 insertions(+), 176 deletions(-) diff --git a/docs/development.md b/docs/development.md index 7515406f4..5a1fa8d9c 100644 --- a/docs/development.md +++ b/docs/development.md @@ -1,9 +1,9 @@ # Development This section describes the steps you need to take to start development -on paperless-ngx. +on Paperless-ngx. -Check out the source from github. The repository is organized in the +Check out the source from GitHub. The repository is organized in the following way: - `main` always represents the latest release and will only see @@ -12,7 +12,7 @@ following way: - `feature-X` contain bigger changes that will be in some release, but not necessarily the next one. -When making functional changes to paperless, _always_ make your changes +When making functional changes to Paperless-ngx, _always_ make your changes on the `dev` branch. Apart from that, the folder structure is as follows: @@ -24,9 +24,9 @@ Apart from that, the folder structure is as follows: development. - `docker/` - Files required to build the docker image. -## Contributing to Paperless +## Contributing to Paperless-ngx -Maybe you've been using Paperless for a while and want to add a feature +Maybe you've been using Paperless-ngx for a while and want to add a feature or two, or maybe you've come across a bug that you have some ideas how to solve. The beauty of open source software is that you can see what's wrong and help to get it fixed for everyone! @@ -36,13 +36,13 @@ conduct](https://github.com/paperless-ngx/paperless-ngx/blob/main/CODE_OF_CONDUC and other important information in the [contributing guidelines](https://github.com/paperless-ngx/paperless-ngx/blob/main/CONTRIBUTING.md). -## Code formatting with pre-commit Hooks +## Code formatting with pre-commit hooks To ensure a consistent style and formatting across the project source, -the project utilizes a Git [`pre-commit`](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) -hook to perform some formatting and linting before a commit is allowed. +the project utilizes Git [`pre-commit`](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) +hooks to perform some formatting and linting before a commit is allowed. That way, everyone uses the same style and some common issues can be caught -early on. See below for installation instructions. +early on. Once installed, hooks will run when you commit. If the formatting isn't quite right or a linter catches something, the commit will be rejected. @@ -51,129 +51,109 @@ as the Python formatting tool `black`, will format failing files, so all you need to do is `git add` those files again and retry your commit. -## Initial setup and first start +## General setup -After you forked and cloned the code from github you need to perform a -first-time setup. To do the setup you need to perform the steps from the -following chapters in a certain order: +After you forked and cloned the code from GitHub you need to perform a +first-time setup. + +!!! note +Every command is executed directly from the root folder of the project unless specified otherwise. 1. Install prerequisites + pipenv as mentioned in - [Bare metal route](/setup#bare_metal) + [Bare metal route](/setup#bare_metal). 2. Copy `paperless.conf.example` to `paperless.conf` and enable debug - mode. + mode within the file via `PAPERLESS_DEBUG=true`. -3. Install the Angular CLI interface: +3. Create `consume` and `media` directories: - ```shell-session - $ npm install -g @angular/cli + ```bash + $ mkdir -p consume media ``` -4. Install pre-commit hooks +4. Install the Python dependencies: - ```shell-session - pre-commit install + ```bash + $ pipenv install --dev ``` -5. Create `consume` and `media` folders in the cloned root folder. + !!! note - ```shell-session - mkdir -p consume media + Using a virtual environment is highly recommended. You can spawn one via `pipenv shell`. + Make sure you're using Python 3.10.x or lower. Otherwise you might + get issues with building dependencies. You can use + [pyenv](https://github.com/pyenv/pyenv) to install a specific + Python version. + +5. Install pre-commit hooks: + + ```bash + $ pre-commit install ``` -6. You can now either ... +6. Apply migrations and create a superuser for your development instance: + + ```bash + # src/ + + $ python3 manage.py migrate + $ python3 manage.py createsuperuser + ``` + +7. You can now either ... - install redis or - - use the included scripts/start-services.sh to use docker to fire + - use the included `scripts/start_services.sh` to use docker to fire up a redis instance (and some other services such as tika, gotenberg and a database server) or - spin up a bare redis container - ```shell-session - docker run -d -p 6379:6379 --restart unless-stopped redis:latest + ``` + $ docker run -d -p 6379:6379 --restart unless-stopped redis:latest ``` -7. Install the python dependencies by performing in the src/ directory. - - ```shell-session - pipenv install --dev - ``` - -!!! note - - Make sure you're using python 3.10.x or lower. Otherwise you might - get issues with building dependencies. You can use - [pyenv](https://github.com/pyenv/pyenv) to install a specific - python version. - -8. Generate the static UI so you can perform a login to get session - that is required for frontend development (this needs to be done one - time only). From src-ui directory: - - ```shell-session - npm install . - ./node_modules/.bin/ng build --configuration production - ``` - -9. Apply migrations and create a superuser for your dev instance: - - ```shell-session - python3 manage.py migrate - python3 manage.py createsuperuser - ``` - -10. Now spin up the dev backend. Depending on which part of paperless - you're developing for, you need to have some or all of them - running. - - ```shell-session - python3 manage.py runserver & python3 manage.py document_consumer & celery --app paperless worker - ``` - -11. Login with the superuser credentials provided in step 8 at - `http://localhost:8000` to create a session that enables you to use - the backend. - -Backend development environment is now ready, to start Frontend -development go to `/src-ui` and run `ng serve`. From there you can use -`http://localhost:4200` for a preview. +8. Continue with either back-end or front-end development – or both :-). ## Back end development -The backend is a [Django](https://www.djangoproject.com/) application. PyCharm works well for development, -but you can use whatever you want. +The back end is a [Django](https://www.djangoproject.com/) application. [PyCharm](https://www.jetbrains.com/de-de/pycharm/) as well as [Visual Studio Code](https://code.visualstudio.com) work well for development, but you can use whatever you want. -Configure the IDE to use the src/ folder as the base source folder. +Configure the IDE to use the `src/`-folder as the base source folder. Configure the following launch configurations in your IDE: - `python3 manage.py runserver` -- `celery --app paperless worker` - `python3 manage.py document_consumer` +- `celery --app paperless worker -l DEBUG` (or any other log level) To start them all: -```shell-session -python3 manage.py runserver & python3 manage.py document_consumer & celery --app paperless worker +```bash +# src/ + +$ python3 manage.py runserver & \ + python3 manage.py document_consumer & \ + celery --app paperless worker -l DEBUG ``` -Testing and code style: +You might need the front end to test your back end code. This assumes that you have AngularJS installed on your system. Go to the [Front end development](#front-end-development) section for further details. To build the front end once use this commmand: + +```bash +# src-ui/ + +$ npm install +$ ng build --configuration production +``` + +### Testing - Run `pytest` in the `src/` directory to execute all tests. This also - generates a HTML coverage report. When runnings test, paperless.conf - is loaded as well. However: the tests rely on the default + generates a HTML coverage report. When runnings test, `paperless.conf` + is loaded as well. However, the tests rely on the default configuration. This is not ideal. But for now, make sure no settings except for DEBUG are overridden when testing. -- Coding style is enforced by the Git pre-commit hooks. These will - ensure your code is formatted and do some linting when you do a `git commit`. - -- You can also run `black` manually to format your code - -- The `pre-commit` hooks will modify files and interact with each other. - It may take a couple of `git add`, `git commit` cycle to satisfy them. - !!! note The line length rule E501 is generally useful for getting multiple @@ -184,98 +164,98 @@ Testing and code style: ## Front end development -The front end is built using Angular. In order to get started, you need -`npm`. Install the Angular CLI interface with +The front end is built using AngularJS. In order to get started, you need Node.js (version 14.15+) and +`npm`. -```shell-session -$ npm install -g @angular/cli -``` +!!! note -and make sure that it's on your path. Next, in the src-ui/ directory, -install the required dependencies of the project. + The following commands are all performed in the `src-ui`-directory. You will need a running back end (including an active session) to connect to the back end API. To spin it up refer to the commands under the section [above](#back-end-development). -```shell-session -$ npm install -``` +1. Install the Angular CLI. You might need sudo privileges + to perform this command: -You can launch a development server by running + ```bash + $ npm install -g @angular/cli + ``` -```shell-session -$ ng serve -``` +2. Make sure that it's on your path. -This will automatically update whenever you save. However, in-place -compilation might fail on syntax errors, in which case you need to -restart it. +3. Install all neccessary modules: -By default, the development server is available on -`http://localhost:4200/` and is configured to access the API at -`http://localhost:8000/api/`, which is the default of the backend. If -you enabled DEBUG on the back end, several security overrides for -allowed hosts, CORS and X-Frame-Options are in place so that the front -end behaves exactly as in production. This also relies on you being -logged into the back end. Without a valid session, The front end will -simply not work. + ```bash + $ npm install + ``` -Testing and code style: +4. You can launch a development server by running: -- The frontend code (.ts, .html, .scss) use `prettier` for code + ```bash + $ ng serve + ``` + + This will automatically update whenever you save. However, in-place + compilation might fail on syntax errors, in which case you need to + restart it. + + By default, the development server is available on `http://localhost:4200/` and is configured to access the API at + `http://localhost:8000/api/`, which is the default of the backend. If you enabled `DEBUG` on the back end, several security overrides for allowed hosts, CORS and X-Frame-Options are in place so that the front end behaves exactly as in production. + +### Testing and code style + +- The front end code (.ts, .html, .scss) use `prettier` for code formatting via the Git `pre-commit` hooks which run automatically on - commit. See - [above](#code-formatting-with-pre-commit-hooks) for installation. You can also run this via cli with a + commit. See [above](#code-formatting-with-pre-commit-hooks) for installation instructions. You can also run this via the CLI with a command such as - ```shell-session + ```bash $ git ls-files -- '*.ts' | xargs pre-commit run prettier --files ``` -- Frontend testing uses jest and cypress. There is currently a need - for significantly more frontend tests. Unit tests and e2e tests, +- Front end testing uses jest and cypress. There is currently a need + for significantly more front end tests. Unit tests and e2e tests, respectively, can be run non-interactively with: - ```shell-session + ```bash $ ng test $ npm run e2e:ci ``` - Cypress also includes a UI which can be run from within the `src-ui` - directory with + - Cypress also includes a UI which can be run with: - ```shell-session - $ ./node_modules/.bin/cypress open + ```bash + $ ./node_modules/.bin/cypress open + ``` + +- In order to build the front end and serve it as part of Django, execute: + + ```bash + $ ng build --configuration production ``` -In order to build the front end and serve it as part of django, execute - -```shell-session -$ ng build --configuration production -``` - -This will build the front end and put it in a location from which the -Django server will serve it as static content. This way, you can verify -that authentication is working. + This will build the front end and put it in a location from which the + Django server will serve it as static content. This way, you can verify + that authentication is working. ## Localization -Paperless is available in many different languages. Since paperless -consists both of a django application and an Angular front end, both +Paperless-ngx is available in many different languages. Since Paperless-ngx +consists both of a Django application and an AngularJS front end, both these parts have to be translated separately. ### Front end localization -- The Angular front end does localization according to the [Angular +- The AngularJS front end does localization according to the [Angular documentation](https://angular.io/guide/i18n). - The source language of the project is "en_US". -- The source strings end up in the file "src-ui/messages.xlf". +- The source strings end up in the file `src-ui/messages.xlf`. - The translated strings need to be placed in the - "src-ui/src/locale/" folder. + `src-ui/src/locale/` folder. - In order to extract added or changed strings from the source files, call `ng xi18n --ivy`. Adding new languages requires adding the translated files in the -"src-ui/src/locale/" folder and adjusting a couple files. +`src-ui/src/locale/` folder and adjusting a couple files. -1. Adjust "src-ui/angular.json": +1. Adjust `src-ui/angular.json`: ```json "i18n": { @@ -292,7 +272,7 @@ Adding new languages requires adding the translated files in the ``` 2. Add the language to the available options in - "src-ui/src/app/services/settings.service.ts": + `src-ui/src/app/services/settings.service.ts`: ```typescript getLanguageOptions(): LanguageOption[] { @@ -313,7 +293,7 @@ Adding new languages requires adding the translated files in the and "yyyy". 3. Import and register the Angular data for this locale in - "src-ui/src/app/app.module.ts": + `src-ui/src/app/app.module.ts`: ```typescript import localeDe from '@angular/common/locales/de' @@ -326,10 +306,10 @@ A majority of the strings that appear in the back end appear only when the admin is used. However, some of these are still shown on the front end (such as error messages). -- The django application does localization according to the [django +- The django application does localization according to the [Django documentation](https://docs.djangoproject.com/en/3.1/topics/i18n/translation/). - The source language of the project is "en_US". -- Localization files end up in the folder "src/locale/". +- Localization files end up in the folder `src/locale/`. - In order to extract strings from the application, call `python3 manage.py makemessages -l en_US`. This is important after making changes to translatable strings. @@ -340,8 +320,8 @@ end (such as error messages). command. Adding new languages requires adding the translated files in the -"src/locale/" folder and adjusting the file -"src/paperless/settings.py" to include the new language: +`src/locale/`-folder and adjusting the file +`src/paperless/settings.py` to include the new language: ```python LANGUAGES = [ @@ -360,18 +340,27 @@ LANGUAGES = [ The documentation is built using material-mkdocs, see their [documentation](https://squidfunk.github.io/mkdocs-material/reference/). If you want to build the documentation locally, this is how you do it: -1. Install python dependencies. +1. Have an active pipenv shell (`pipenv shell`) and install Python dependencies: - ```shell-session - $ cd /path/to/paperless + ```bash $ pipenv install --dev ``` 2. Build the documentation - ```shell-session - $ cd /path/to/paperless - $ pipenv mkdocs build --config-file mkdocs.yml + ```bash + $ mkdocs build --config-file mkdocs.yml + ``` + + _alternatively..._ + +3. Serve the documentation. This will spin up a + copy of the documentation at http://127.0.0.1:8000 + that will automatically refresh everytime you change + something. + + ```bash + $ mkdocs serve ``` ## Building the Docker image @@ -384,35 +373,35 @@ helper script `build-docker-image.sh`. Building the docker image from source: -```shell-session +```bash ./build-docker-image.sh Dockerfile -t ``` -## Extending Paperless +## Extending Paperless-ngx -Paperless does not have any fancy plugin systems and will probably never +Paperless-ngx does not have any fancy plugin systems and will probably never have. However, some parts of the application have been designed to allow easy integration of additional features without any modification to the base code. ### Making custom parsers -Paperless uses parsers to add documents to paperless. A parser is +Paperless-ngx uses parsers to add documents. A parser is responsible for: -- Retrieve the content from the original -- Create a thumbnail -- Optional: Retrieve a created date from the original -- Optional: Create an archived document from the original +- Retrieving the content from the original +- Creating a thumbnail +- _optional:_ Retrieving a created date from the original +- _optional:_ Creainge an archived document from the original -Custom parsers can be added to paperless to support more file types. In +Custom parsers can be added to Paperless-ngx to support more file types. In order to do that, you need to write the parser itself and announce its -existence to paperless. +existence to Paperless-ngx. The parser itself must extend `documents.parsers.DocumentParser` and must implement the methods `parse` and `get_thumbnail`. You can provide your own implementation to `get_date` if you don't want to rely on -paperless' default date guessing mechanisms. +Paperless-ngx' default date guessing mechanisms. ```python class MyCustomParser(DocumentParser): @@ -444,7 +433,7 @@ to be empty and removed after consumption finished. You can use that directory to store any intermediate files and also use it to store the thumbnail / archived document. -After that, you need to announce your parser to paperless. You need to +After that, you need to announce your parser to Paperless-ngx. You need to connect a handler to the `document_consumer_declaration` signal. Have a look in the file `src/paperless_tesseract/apps.py` on how that's done. The handler is a method that returns information about your parser: @@ -464,11 +453,11 @@ def myparser_consumer_declaration(sender, **kwargs): - `parser` is a reference to a class that extends `DocumentParser`. - `weight` is used whenever two or more parsers are able to parse a file: The parser with the higher weight wins. This can be used to - override the parsers provided by paperless. + override the parsers provided by Paperless-ngx. - `mime_types` is a dictionary. The keys are the mime types your parser supports and the value is the default file extension that - paperless should use when storing files and serving them for + Paperless-ngx should use when storing files and serving them for download. We could guess that from the file extensions, but some - mime types have many extensions associated with them and the python + mime types have many extensions associated with them and the Python methods responsible for guessing the extension do not always return the same value. diff --git a/docs/setup.md b/docs/setup.md index d4fe8a4cf..391ef7850 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -388,12 +388,7 @@ supported. ``` 8. Install python requirements from the `requirements.txt` file. It is - up to you if you wish to use a virtual environment or not. First you - should update your pip, so it gets the actual packages. - - ```shell-session - sudo -Hu paperless pip3 install --upgrade pip - ``` + up to you if you wish to use a virtual environment or not. First you should update your pip, so it gets the actual packages. ```shell-session sudo -Hu paperless pip3 install -r requirements.txt diff --git a/mkdocs.yml b/mkdocs.yml index 6314a44d3..0d56abc68 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -54,7 +54,7 @@ nav: - 'FAQs': faq.md - troubleshooting.md - changelog.md -copyright: Copyright © 2016 - 2022 Daniel Quinn, Jonas Winkler, and the Paperless-ngx team +copyright: Copyright © 2016 - 2023 Daniel Quinn, Jonas Winkler, and the Paperless-ngx team extra: social: - icon: fontawesome/brands/github From b07b8d65a66984ade8eea076f653a4281a89b247 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 26 Jan 2023 12:43:19 -0800 Subject: [PATCH 03/32] Fix note indentation in dev docs --- docs/development.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/development.md b/docs/development.md index 5a1fa8d9c..d39261e23 100644 --- a/docs/development.md +++ b/docs/development.md @@ -57,7 +57,8 @@ After you forked and cloned the code from GitHub you need to perform a first-time setup. !!! note -Every command is executed directly from the root folder of the project unless specified otherwise. + + Every command is executed directly from the root folder of the project unless specified otherwise. 1. Install prerequisites + pipenv as mentioned in [Bare metal route](/setup#bare_metal). From 2ab77fbaf7a42f60c23e8b28cf2af6080d84b919 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Fri, 27 Jan 2023 08:34:00 -0800 Subject: [PATCH 04/32] Removes pikepdf based scanning, fixes up unit testing (+ commenting) --- src/documents/barcodes.py | 73 +-- ...n.png => barcode-39-PATCHT-distortion.png} | Bin ....png => barcode-39-PATCHT-distortion2.png} | Bin src/documents/tests/test_barcodes.py | 448 +++++++++++++----- 4 files changed, 352 insertions(+), 169 deletions(-) rename src/documents/tests/samples/barcodes/{barcode-39-PATCHT-distorsion.png => barcode-39-PATCHT-distortion.png} (100%) rename src/documents/tests/samples/barcodes/{barcode-39-PATCHT-distorsion2.png => barcode-39-PATCHT-distortion2.png} (100%) diff --git a/src/documents/barcodes.py b/src/documents/barcodes.py index 82b8afecc..6e3ecfe05 100644 --- a/src/documents/barcodes.py +++ b/src/documents/barcodes.py @@ -4,7 +4,6 @@ import shutil import tempfile from dataclasses import dataclass from functools import lru_cache -from math import ceil from pathlib import Path from typing import List from typing import Optional @@ -12,10 +11,9 @@ from typing import Optional import magic from django.conf import settings from pdf2image import convert_from_path +from pdf2image.exceptions import PDFPageCountError from pikepdf import Page -from pikepdf import PasswordError from pikepdf import Pdf -from pikepdf import PdfImage from PIL import Image from PIL import ImageSequence from pyzbar import pyzbar @@ -154,52 +152,15 @@ def scan_file_for_barcodes( (page_number, barcode_text) tuples """ - def _pikepdf_barcode_scan(pdf_filepath: str) -> List[Barcode]: - detected_barcodes = [] - with Pdf.open(pdf_filepath) as pdf: - for page_num, page in enumerate(pdf.pages): - for image_key in page.images: - pdfimage = PdfImage(page.images[image_key]) - - # This type is known to have issues: - # https://github.com/pikepdf/pikepdf/issues/401 - if "/CCITTFaxDecode" in pdfimage.filters: - raise BarcodeImageFormatError( - "Unable to decode CCITTFaxDecode images", - ) - - # Not all images can be transcoded to a PIL image, which - # is what pyzbar expects to receive, so this may - # raise an exception, triggering fallback - pillow_img = pdfimage.as_pil_image() - - # Scale the image down - # See: https://github.com/paperless-ngx/paperless-ngx/issues/2385 - # TLDR: zbar has issues with larger images - width, height = pillow_img.size - if width > 1024: - scaler = ceil(width / 1024) - new_width = int(width / scaler) - new_height = int(height / scaler) - pillow_img = pillow_img.resize((new_width, new_height)) - - width, height = pillow_img.size - if height > 2048: - scaler = ceil(height / 2048) - new_width = int(width / scaler) - new_height = int(height / scaler) - pillow_img = pillow_img.resize((new_width, new_height)) - - for barcode_value in barcode_reader(pillow_img): - detected_barcodes.append(Barcode(page_num, barcode_value)) - - return detected_barcodes - def _pdf2image_barcode_scan(pdf_filepath: str) -> List[Barcode]: detected_barcodes = [] # use a temporary directory in case the file is too big to handle in memory with tempfile.TemporaryDirectory() as path: - pages_from_path = convert_from_path(pdf_filepath, output_folder=path) + pages_from_path = convert_from_path( + pdf_filepath, + dpi=300, + output_folder=path, + ) for current_page_number, page in enumerate(pages_from_path): for barcode_value in barcode_reader(page): detected_barcodes.append( @@ -219,27 +180,19 @@ def scan_file_for_barcodes( # Always try pikepdf first, it's usually fine, faster and # uses less memory try: - barcodes = _pikepdf_barcode_scan(pdf_filepath) + barcodes = _pdf2image_barcode_scan(pdf_filepath) # Password protected files can't be checked - except PasswordError as e: + # This is the exception raised for those + except PDFPageCountError as e: logger.warning( f"File is likely password protected, not checking for barcodes: {e}", ) - # Handle pikepdf related image decoding issues with a fallback to page - # by page conversion to images in a temporary directory - except Exception as e: + # This file is really borked, allow the consumption to continue + # but it may fail further on + except Exception as e: # pragma: no cover logger.warning( - f"Falling back to pdf2image because: {e}", + f"Exception during barcode scanning: {e}", ) - try: - barcodes = _pdf2image_barcode_scan(pdf_filepath) - # This file is really borked, allow the consumption to continue - # but it may fail further on - except Exception as e: # pragma: no cover - logger.warning( - f"Exception during barcode scanning: {e}", - ) - else: logger.warning( f"Unsupported file format for barcode reader: {str(mime_type)}", diff --git a/src/documents/tests/samples/barcodes/barcode-39-PATCHT-distorsion.png b/src/documents/tests/samples/barcodes/barcode-39-PATCHT-distortion.png similarity index 100% rename from src/documents/tests/samples/barcodes/barcode-39-PATCHT-distorsion.png rename to src/documents/tests/samples/barcodes/barcode-39-PATCHT-distortion.png diff --git a/src/documents/tests/samples/barcodes/barcode-39-PATCHT-distorsion2.png b/src/documents/tests/samples/barcodes/barcode-39-PATCHT-distortion2.png similarity index 100% rename from src/documents/tests/samples/barcodes/barcode-39-PATCHT-distorsion2.png rename to src/documents/tests/samples/barcodes/barcode-39-PATCHT-distortion2.png diff --git a/src/documents/tests/test_barcodes.py b/src/documents/tests/test_barcodes.py index 7beeee288..8d8b2acfb 100644 --- a/src/documents/tests/test_barcodes.py +++ b/src/documents/tests/test_barcodes.py @@ -3,7 +3,6 @@ import shutil import tempfile from unittest import mock -import pikepdf from django.conf import settings from django.test import override_settings from django.test import TestCase @@ -23,13 +22,29 @@ class TestBarcode(DirectoriesMixin, TestCase): BARCODE_SAMPLE_DIR = os.path.join(SAMPLE_DIR, "barcodes") - def test_barcode_reader(self): + def test_barcode_reader_png(self): + """ + GIVEN: + - PNG file with separator barcode + WHEN: + - Image is scanned for codes + THEN: + - The barcode is detected + """ test_file = os.path.join(self.BARCODE_SAMPLE_DIR, "barcode-39-PATCHT.png") img = Image.open(test_file) - separator_barcode = str(settings.CONSUMER_BARCODE_STRING) + separator_barcode = settings.CONSUMER_BARCODE_STRING self.assertEqual(barcodes.barcode_reader(img), [separator_barcode]) - def test_barcode_reader2(self): + def test_barcode_reader_pbm(self): + """ + GIVEN: + - Netpbm bitmap file with separator barcode + WHEN: + - Image is scanned for codes + THEN: + - The barcode is detected + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t.pbm", @@ -38,25 +53,49 @@ class TestBarcode(DirectoriesMixin, TestCase): separator_barcode = str(settings.CONSUMER_BARCODE_STRING) self.assertEqual(barcodes.barcode_reader(img), [separator_barcode]) - def test_barcode_reader_distorsion(self): + def test_barcode_reader_distortion_scratchy(self): + """ + GIVEN: + - Image containing high noise + WHEN: + - Image is scanned for codes + THEN: + - The barcode is detected + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, - "barcode-39-PATCHT-distorsion.png", + "barcode-39-PATCHT-distortion.png", ) img = Image.open(test_file) separator_barcode = str(settings.CONSUMER_BARCODE_STRING) self.assertEqual(barcodes.barcode_reader(img), [separator_barcode]) - def test_barcode_reader_distorsion2(self): + def test_barcode_reader_distortion_stretched(self): + """ + GIVEN: + - Image with a stretched barcode + WHEN: + - Image is scanned for codes + THEN: + - The barcode is detected + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, - "barcode-39-PATCHT-distorsion2.png", + "barcode-39-PATCHT-distortion2.png", ) img = Image.open(test_file) separator_barcode = str(settings.CONSUMER_BARCODE_STRING) self.assertEqual(barcodes.barcode_reader(img), [separator_barcode]) def test_barcode_reader_unreadable(self): + """ + GIVEN: + - Image with a truly unreadable barcode + WHEN: + - Image is scanned for codes + THEN: + - No barcode is detected + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "barcode-39-PATCHT-unreadable.png", @@ -65,6 +104,14 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(barcodes.barcode_reader(img), []) def test_barcode_reader_qr(self): + """ + GIVEN: + - Image file with QR separator barcode + WHEN: + - Image is scanned for codes + THEN: + - The barcode is detected + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "qr-code-PATCHT.png", @@ -74,6 +121,14 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(barcodes.barcode_reader(img), [separator_barcode]) def test_barcode_reader_128(self): + """ + GIVEN: + - Image file with 128 style separator barcode + WHEN: + - Image is scanned for codes + THEN: + - The barcode is detected + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "barcode-128-PATCHT.png", @@ -83,11 +138,27 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(barcodes.barcode_reader(img), [separator_barcode]) def test_barcode_reader_no_barcode(self): + """ + GIVEN: + - Image file with no barcode + WHEN: + - Image is scanned for codes + THEN: + - No barcode is detected + """ test_file = os.path.join(self.SAMPLE_DIR, "simple.png") img = Image.open(test_file) - self.assertEqual(barcodes.barcode_reader(img), []) + self.assertListEqual(barcodes.barcode_reader(img), []) def test_barcode_reader_custom_separator(self): + """ + GIVEN: + - Image file with custom separator barcode value + WHEN: + - Image is scanned for codes + THEN: + - The barcode is detected + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "barcode-39-custom.png", @@ -96,6 +167,14 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(barcodes.barcode_reader(img), ["CUSTOM BARCODE"]) def test_barcode_reader_custom_qr_separator(self): + """ + GIVEN: + - Image file with custom separator barcode value as a QR code + WHEN: + - Image is scanned for codes + THEN: + - The barcode is detected + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "barcode-qr-custom.png", @@ -104,6 +183,14 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(barcodes.barcode_reader(img), ["CUSTOM BARCODE"]) def test_barcode_reader_custom_128_separator(self): + """ + GIVEN: + - Image file with custom separator 128 barcode value + WHEN: + - Image is scanned for codes + THEN: + - The barcode is detected + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "barcode-128-custom.png", @@ -164,6 +251,14 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(barcodes.barcode_reader(img), ["CUSTOM-PREFIX-00123"]) def test_get_mime_type(self): + """ + GIVEN: + - + WHEN: + - + THEN: + - + """ tiff_file = os.path.join( self.SAMPLE_DIR, "simple.tiff", @@ -194,6 +289,14 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(barcodes.get_file_mime_type(png_file), "image/png") def test_convert_from_tiff_to_pdf(self): + """ + GIVEN: + - + WHEN: + - + THEN: + - + """ test_file = os.path.join( os.path.dirname(__file__), "samples", @@ -207,6 +310,14 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(file_extension, ".pdf") def test_convert_error_from_pdf_to_pdf(self): + """ + GIVEN: + - + WHEN: + - + THEN: + - + """ test_file = os.path.join( self.SAMPLE_DIR, "simple.pdf", @@ -216,6 +327,14 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertIsNone(barcodes.convert_from_tiff_to_pdf(dst)) def test_scan_file_for_separating_barcodes(self): + """ + GIVEN: + - + WHEN: + - + THEN: + - + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t.pdf", @@ -231,6 +350,14 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertListEqual(separator_page_numbers, [0]) def test_scan_file_for_separating_barcodes_none_present(self): + """ + GIVEN: + - + WHEN: + - + THEN: + - + """ test_file = os.path.join(self.SAMPLE_DIR, "simple.pdf") doc_barcode_info = barcodes.scan_file_for_barcodes( test_file, @@ -242,7 +369,15 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(doc_barcode_info.pdf_path, test_file) self.assertListEqual(separator_page_numbers, []) - def test_scan_file_for_separating_barcodes3(self): + def test_scan_file_for_separating_barcodes_middle_page(self): + """ + GIVEN: + - PDF file containing a separator on page 1 (zero indexed) + WHEN: + - File is scanned for barcodes + THEN: + - Barcode is detected on page 1 (zero indexed) + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t-middle.pdf", @@ -257,7 +392,15 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(doc_barcode_info.pdf_path, test_file) self.assertListEqual(separator_page_numbers, [1]) - def test_scan_file_for_separating_barcodes4(self): + def test_scan_file_for_separating_barcodes_multiple_pages(self): + """ + GIVEN: + - PDF file containing a separator on pages 2 and 5 (zero indexed) + WHEN: + - File is scanned for barcodes + THEN: + - Barcode is detected on pages 2 and 5 (zero indexed) + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "several-patcht-codes.pdf", @@ -272,7 +415,16 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(doc_barcode_info.pdf_path, test_file) self.assertListEqual(separator_page_numbers, [2, 5]) - def test_scan_file_for_separating_barcodes_upsidedown(self): + def test_scan_file_for_separating_barcodes_upside_down(self): + """ + GIVEN: + - PDF file containing a separator on page 1 (zero indexed) + - The barcode is upside down + WHEN: + - File is scanned for barcodes + THEN: + - Barcode is detected on page 1 (zero indexed) + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t-middle_reverse.pdf", @@ -287,66 +439,6 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(doc_barcode_info.pdf_path, test_file) self.assertListEqual(separator_page_numbers, [1]) - def test_scan_file_for_barcodes_pillow_transcode_error(self): - """ - GIVEN: - - A PDF containing an image which cannot be transcoded to a PIL image - WHEN: - - The image tries to be transcoded to a PIL image, but fails - THEN: - - The barcode reader is still called - """ - - def _build_device_n_pdf(self, save_path: str): - # Based on the pikepdf tests - # https://github.com/pikepdf/pikepdf/blob/abb35ebe17d579d76abe08265e00cf8890a12a95/tests/test_image_access.py - pdf = pikepdf.new() - pdf.add_blank_page(page_size=(72, 72)) - imobj = pikepdf.Stream( - pdf, - bytes(range(0, 256)), - BitsPerComponent=8, - ColorSpace=pikepdf.Array( - [ - pikepdf.Name.DeviceN, - pikepdf.Array([pikepdf.Name.Black]), - pikepdf.Name.DeviceCMYK, - pikepdf.Stream( - pdf, - b"{0 0 0 4 -1 roll}", # Colorspace conversion function - FunctionType=4, - Domain=[0.0, 1.0], - Range=[0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0], - ), - ], - ), - Width=16, - Height=16, - Type=pikepdf.Name.XObject, - Subtype=pikepdf.Name.Image, - ) - pim = pikepdf.PdfImage(imobj) - self.assertEqual(pim.mode, "DeviceN") - self.assertTrue(pim.is_device_n) - - pdf.pages[0].Contents = pikepdf.Stream(pdf, b"72 0 0 72 0 0 cm /Im0 Do") - pdf.pages[0].Resources = pikepdf.Dictionary( - XObject=pikepdf.Dictionary(Im0=imobj), - ) - pdf.save(save_path) - - with tempfile.NamedTemporaryFile(suffix="pdf") as device_n_pdf: - # Build an offending file - _build_device_n_pdf(self, str(device_n_pdf.name)) - with mock.patch("documents.barcodes.barcode_reader") as reader: - reader.return_value = list() - - _ = barcodes.scan_file_for_barcodes( - str(device_n_pdf.name), - ) - - reader.assert_called() - def test_scan_file_for_separating_barcodes_fax_decode(self): """ GIVEN: @@ -371,6 +463,15 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertListEqual(separator_page_numbers, [1]) def test_scan_file_for_separating_qr_barcodes(self): + """ + GIVEN: + - PDF file containing a separator on page 0 (zero indexed) + - The barcode is a QR code + WHEN: + - File is scanned for barcodes + THEN: + - Barcode is detected on page 0 (zero indexed) + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t-qr.pdf", @@ -387,6 +488,15 @@ class TestBarcode(DirectoriesMixin, TestCase): @override_settings(CONSUMER_BARCODE_STRING="CUSTOM BARCODE") def test_scan_file_for_separating_custom_barcodes(self): + """ + GIVEN: + - PDF file containing a separator on page 0 (zero indexed) + - The barcode separation value is customized + WHEN: + - File is scanned for barcodes + THEN: + - Barcode is detected on page 0 (zero indexed) + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "barcode-39-custom.pdf", @@ -403,6 +513,16 @@ class TestBarcode(DirectoriesMixin, TestCase): @override_settings(CONSUMER_BARCODE_STRING="CUSTOM BARCODE") def test_scan_file_for_separating_custom_qr_barcodes(self): + """ + GIVEN: + - PDF file containing a separator on page 0 (zero indexed) + - The barcode separation value is customized + - The barcode is a QR code + WHEN: + - File is scanned for barcodes + THEN: + - Barcode is detected on page 0 (zero indexed) + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "barcode-qr-custom.pdf", @@ -419,6 +539,16 @@ class TestBarcode(DirectoriesMixin, TestCase): @override_settings(CONSUMER_BARCODE_STRING="CUSTOM BARCODE") def test_scan_file_for_separating_custom_128_barcodes(self): + """ + GIVEN: + - PDF file containing a separator on page 0 (zero indexed) + - The barcode separation value is customized + - The barcode is a 128 code + WHEN: + - File is scanned for barcodes + THEN: + - Barcode is detected on page 0 (zero indexed) + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "barcode-128-custom.pdf", @@ -434,6 +564,16 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertListEqual(separator_page_numbers, [0]) def test_scan_file_for_separating_wrong_qr_barcodes(self): + """ + GIVEN: + - PDF file containing a separator on page 0 (zero indexed) + - The barcode value is customized + - The separation value is NOT customized + WHEN: + - File is scanned for barcodes + THEN: + - No split pages are detected + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "barcode-39-custom.pdf", @@ -474,13 +614,21 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertListEqual(separator_page_numbers, [1]) def test_separate_pages(self): + """ + GIVEN: + - Input PDF 2 pages after separation + WHEN: + - The input file separated at the barcode + THEN: + - Two new documents are produced + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t-middle.pdf", ) - pages = barcodes.separate_pages(test_file, [1]) + documents = barcodes.separate_pages(test_file, [1]) - self.assertEqual(len(pages), 2) + self.assertEqual(len(documents), 2) def test_separate_pages_double_code(self): """ @@ -493,8 +641,7 @@ class TestBarcode(DirectoriesMixin, TestCase): """ test_file = os.path.join( os.path.dirname(__file__), - "samples", - "barcodes", + self.BARCODE_SAMPLE_DIR, "patch-code-t-double.pdf", ) pages = barcodes.separate_pages(test_file, [1, 2]) @@ -502,6 +649,15 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(len(pages), 2) def test_separate_pages_no_list(self): + """ + GIVEN: + - Input file to separate + WHEN: + - No separation pages are provided + THEN: + - No new documents are produced + - A warning is logged + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t-middle.pdf", @@ -517,16 +673,32 @@ class TestBarcode(DirectoriesMixin, TestCase): ) def test_save_to_dir(self): + """ + GIVEN: + - File to save to a directory + WHEN: + - The file is saved + THEN: + - The file exists + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t.pdf", ) - tempdir = tempfile.mkdtemp(prefix="paperless-", dir=settings.SCRATCH_DIR) - barcodes.save_to_dir(test_file, target_dir=tempdir) - target_file = os.path.join(tempdir, "patch-code-t.pdf") + barcodes.save_to_dir(test_file, target_dir=settings.SCRATCH_DIR) + target_file = os.path.join(settings.SCRATCH_DIR, "patch-code-t.pdf") self.assertTrue(os.path.isfile(target_file)) - def test_save_to_dir2(self): + def test_save_to_dir_not_existing(self): + """ + GIVEN: + - File to save to a directory + - The directory doesn't exist + WHEN: + - The file is saved + THEN: + - The file exists + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t.pdf", @@ -534,32 +706,51 @@ class TestBarcode(DirectoriesMixin, TestCase): nonexistingdir = "/nowhere" if os.path.isdir(nonexistingdir): self.fail("non-existing dir exists") - else: - with self.assertLogs("paperless.barcodes", level="WARNING") as cm: - barcodes.save_to_dir(test_file, target_dir=nonexistingdir) - self.assertEqual( - cm.output, - [ - f"WARNING:paperless.barcodes:{str(test_file)} or {str(nonexistingdir)} don't exist.", - ], - ) - def test_save_to_dir3(self): + with self.assertLogs("paperless.barcodes", level="WARNING") as cm: + barcodes.save_to_dir(test_file, target_dir=nonexistingdir) + self.assertEqual( + cm.output, + [ + f"WARNING:paperless.barcodes:{str(test_file)} or {str(nonexistingdir)} don't exist.", + ], + ) + + def test_save_to_dir_given_name(self): + """ + GIVEN: + - File to save to a directory + - There is a name override + WHEN: + - The file is saved + THEN: + - The file exists + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t.pdf", ) - tempdir = tempfile.mkdtemp(prefix="paperless-", dir=settings.SCRATCH_DIR) - barcodes.save_to_dir(test_file, newname="newname.pdf", target_dir=tempdir) - target_file = os.path.join(tempdir, "newname.pdf") + barcodes.save_to_dir( + test_file, + newname="newname.pdf", + target_dir=settings.SCRATCH_DIR, + ) + target_file = os.path.join(settings.SCRATCH_DIR, "newname.pdf") self.assertTrue(os.path.isfile(target_file)) def test_barcode_splitter(self): + """ + GIVEN: + - Input file containing barcodes + WHEN: + - Input file is split on barcodes + THEN: + - Correct number of files produced + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t-middle.pdf", ) - tempdir = tempfile.mkdtemp(prefix="paperless-", dir=settings.SCRATCH_DIR) doc_barcode_info = barcodes.scan_file_for_barcodes( test_file, @@ -572,18 +763,33 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertTrue(len(separator_page_numbers) > 0) document_list = barcodes.separate_pages(test_file, separator_page_numbers) - self.assertTrue(document_list) - for document in document_list: - barcodes.save_to_dir(document, target_dir=tempdir) + self.assertGreater(len(document_list), 0) - target_file1 = os.path.join(tempdir, "patch-code-t-middle_document_0.pdf") - target_file2 = os.path.join(tempdir, "patch-code-t-middle_document_1.pdf") + for document in document_list: + barcodes.save_to_dir(document, target_dir=settings.SCRATCH_DIR) + + target_file1 = os.path.join( + settings.SCRATCH_DIR, + "patch-code-t-middle_document_0.pdf", + ) + target_file2 = os.path.join( + settings.SCRATCH_DIR, + "patch-code-t-middle_document_1.pdf", + ) self.assertTrue(os.path.isfile(target_file1)) self.assertTrue(os.path.isfile(target_file2)) @override_settings(CONSUMER_ENABLE_BARCODES=True) def test_consume_barcode_file(self): + """ + GIVEN: + - Input file with barcodes given to consume task + WHEN: + - Consume task returns + THEN: + - The file was split + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t-middle.pdf", @@ -600,6 +806,14 @@ class TestBarcode(DirectoriesMixin, TestCase): CONSUMER_BARCODE_TIFF_SUPPORT=True, ) def test_consume_barcode_tiff_file(self): + """ + GIVEN: + - TIFF image containing barcodes + WHEN: + - Consume task returns + THEN: + - The file was split + """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, "patch-code-t-middle.tiff", @@ -617,11 +831,13 @@ class TestBarcode(DirectoriesMixin, TestCase): @mock.patch("documents.consumer.Consumer.try_consume_file") def test_consume_barcode_unsupported_jpg_file(self, m): """ - This test assumes barcode and TIFF support are enabled and - the user uploads an unsupported image file (e.g. jpg) - - The function shouldn't try to scan for separating barcodes - and continue archiving the file as is. + GIVEN: + - JPEG image as input + WHEN: + - Consume task returns + THEN: + - Barcode reader reported warning + - Consumption continued with the file """ test_file = os.path.join( self.SAMPLE_DIR, @@ -629,8 +845,10 @@ class TestBarcode(DirectoriesMixin, TestCase): ) dst = os.path.join(settings.SCRATCH_DIR, "simple.jpg") shutil.copy(test_file, dst) + with self.assertLogs("paperless.barcodes", level="WARNING") as cm: self.assertIn("Success", tasks.consume_file(dst)) + self.assertListEqual( cm.output, [ @@ -652,8 +870,13 @@ class TestBarcode(DirectoriesMixin, TestCase): ) def test_consume_barcode_supported_no_extension_file(self): """ - This test assumes barcode and TIFF support are enabled and - the user uploads a supported image file, but without extension + GIVEN: + - TIFF image containing barcodes + - TIFF file is given without extension + WHEN: + - Consume task returns + THEN: + - The file was split """ test_file = os.path.join( self.BARCODE_SAMPLE_DIR, @@ -669,11 +892,10 @@ class TestBarcode(DirectoriesMixin, TestCase): """ GIVEN: - Password protected PDF - - pikepdf based scanning WHEN: - File is scanned for barcode THEN: - - Scanning handles the exception without exception + - Scanning handles the exception without crashing """ test_file = os.path.join(self.SAMPLE_DIR, "password-is-test.pdf") doc_barcode_info = barcodes.scan_file_for_barcodes( @@ -808,7 +1030,15 @@ class TestBarcode(DirectoriesMixin, TestCase): @override_settings(CONSUMER_ENABLE_ASN_BARCODE=True) def test_asn_too_large(self): - + """ + GIVEN: + - ASN from barcode enabled + - Barcode contains too large an ASN value + WHEN: + - ASN from barcode checked for correctness + THEN: + - Exception is raised regarding size limits + """ src = os.path.join( os.path.dirname(__file__), "samples", From 4fce5aba63aab92f3f2346304f9e8e3eb9335006 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Fri, 27 Jan 2023 08:37:00 -0800 Subject: [PATCH 05/32] Moves ASN barcode testing into a dedicated class --- src/documents/tests/test_barcodes.py | 267 ++++++++++++++------------- src/documents/tests/utils.py | 25 +++ 2 files changed, 163 insertions(+), 129 deletions(-) diff --git a/src/documents/tests/test_barcodes.py b/src/documents/tests/test_barcodes.py index 8d8b2acfb..1ff698858 100644 --- a/src/documents/tests/test_barcodes.py +++ b/src/documents/tests/test_barcodes.py @@ -1,6 +1,5 @@ import os import shutil -import tempfile from unittest import mock from django.conf import settings @@ -198,58 +197,6 @@ class TestBarcode(DirectoriesMixin, TestCase): img = Image.open(test_file) self.assertEqual(barcodes.barcode_reader(img), ["CUSTOM BARCODE"]) - def test_barcode_reader_asn_normal(self): - """ - GIVEN: - - Image containing standard ASNxxxxx barcode - WHEN: - - Image is scanned for barcodes - THEN: - - The barcode is located - - The barcode value is correct - """ - test_file = os.path.join( - self.BARCODE_SAMPLE_DIR, - "barcode-39-asn-123.png", - ) - img = Image.open(test_file) - self.assertEqual(barcodes.barcode_reader(img), ["ASN00123"]) - - def test_barcode_reader_asn_invalid(self): - """ - GIVEN: - - Image containing invalid ASNxxxxx barcode - - The number portion of the ASN is not a number - WHEN: - - Image is scanned for barcodes - THEN: - - The barcode is located - - The barcode value is correct - """ - test_file = os.path.join( - self.BARCODE_SAMPLE_DIR, - "barcode-39-asn-invalid.png", - ) - img = Image.open(test_file) - self.assertEqual(barcodes.barcode_reader(img), ["ASNXYZXYZ"]) - - def test_barcode_reader_asn_custom_prefix(self): - """ - GIVEN: - - Image containing custom prefix barcode - WHEN: - - Image is scanned for barcodes - THEN: - - The barcode is located - - The barcode value is correct - """ - test_file = os.path.join( - self.BARCODE_SAMPLE_DIR, - "barcode-39-asn-custom-prefix.png", - ) - img = Image.open(test_file) - self.assertEqual(barcodes.barcode_reader(img), ["CUSTOM-PREFIX-00123"]) - def test_get_mime_type(self): """ GIVEN: @@ -908,6 +855,144 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(doc_barcode_info.pdf_path, test_file) self.assertListEqual(separator_page_numbers, []) + +class TestAsnBarcodes(DirectoriesMixin, TestCase): + + SAMPLE_DIR = os.path.join( + os.path.dirname(__file__), + "samples", + ) + + BARCODE_SAMPLE_DIR = os.path.join(SAMPLE_DIR, "barcodes") + + def test_barcode_reader_asn_normal(self): + """ + GIVEN: + - Image containing standard ASNxxxxx barcode + WHEN: + - Image is scanned for barcodes + THEN: + - The barcode is located + - The barcode value is correct + """ + test_file = os.path.join( + self.BARCODE_SAMPLE_DIR, + "barcode-39-asn-123.png", + ) + img = Image.open(test_file) + self.assertEqual(barcodes.barcode_reader(img), ["ASN00123"]) + + def test_barcode_reader_asn_invalid(self): + """ + GIVEN: + - Image containing invalid ASNxxxxx barcode + - The number portion of the ASN is not a number + WHEN: + - Image is scanned for barcodes + THEN: + - The barcode is located + - The barcode value is correct + """ + test_file = os.path.join( + self.BARCODE_SAMPLE_DIR, + "barcode-39-asn-invalid.png", + ) + img = Image.open(test_file) + self.assertEqual(barcodes.barcode_reader(img), ["ASNXYZXYZ"]) + + def test_barcode_reader_asn_custom_prefix(self): + """ + GIVEN: + - Image containing custom prefix barcode + WHEN: + - Image is scanned for barcodes + THEN: + - The barcode is located + - The barcode value is correct + """ + test_file = os.path.join( + self.BARCODE_SAMPLE_DIR, + "barcode-39-asn-custom-prefix.png", + ) + img = Image.open(test_file) + self.assertEqual(barcodes.barcode_reader(img), ["CUSTOM-PREFIX-00123"]) + + @override_settings(CONSUMER_ASN_BARCODE_PREFIX="CUSTOM-PREFIX-") + def test_scan_file_for_asn_custom_prefix(self): + """ + GIVEN: + - PDF containing an ASN barcode with custom prefix + - The ASN value is 123 + WHEN: + - File is scanned for barcodes + THEN: + - The ASN is located + - The ASN integer value is correct + """ + test_file = os.path.join( + self.BARCODE_SAMPLE_DIR, + "barcode-39-asn-custom-prefix.pdf", + ) + doc_barcode_info = barcodes.scan_file_for_barcodes( + test_file, + ) + asn = barcodes.get_asn_from_barcodes(doc_barcode_info.barcodes) + + self.assertEqual(doc_barcode_info.pdf_path, test_file) + self.assertEqual(asn, 123) + + def test_scan_file_for_asn_barcode_invalid(self): + """ + GIVEN: + - PDF containing an ASN barcode + - The ASN value is XYZXYZ + WHEN: + - File is scanned for barcodes + THEN: + - The ASN is located + - The ASN value is not used + """ + test_file = os.path.join( + self.BARCODE_SAMPLE_DIR, + "barcode-39-asn-invalid.pdf", + ) + doc_barcode_info = barcodes.scan_file_for_barcodes( + test_file, + ) + + asn = barcodes.get_asn_from_barcodes(doc_barcode_info.barcodes) + + self.assertEqual(doc_barcode_info.pdf_path, test_file) + self.assertEqual(asn, None) + + @override_settings(CONSUMER_ENABLE_ASN_BARCODE=True) + def test_consume_barcode_file_asn_assignment(self): + """ + GIVEN: + - PDF containing an ASN barcode + - The ASN value is 123 + WHEN: + - File is scanned for barcodes + THEN: + - The ASN is located + - The ASN integer value is correct + - The ASN is provided as the override value to the consumer + """ + test_file = os.path.join( + self.BARCODE_SAMPLE_DIR, + "barcode-39-asn-123.pdf", + ) + + dst = os.path.join(settings.SCRATCH_DIR, "barcode-39-asn-123.pdf") + shutil.copy(test_file, dst) + + with mock.patch("documents.consumer.Consumer.try_consume_file") as mocked_call: + tasks.consume_file(dst) + + args, kwargs = mocked_call.call_args + + self.assertEqual(kwargs["override_asn"], 123) + def test_scan_file_for_asn_barcode(self): """ GIVEN: @@ -952,82 +1037,6 @@ class TestBarcode(DirectoriesMixin, TestCase): self.assertEqual(doc_barcode_info.pdf_path, test_file) self.assertEqual(asn, None) - def test_scan_file_for_asn_barcode_invalid(self): - """ - GIVEN: - - PDF containing an ASN barcode - - The ASN value is XYZXYZ - WHEN: - - File is scanned for barcodes - THEN: - - The ASN is located - - The ASN value is not used - """ - test_file = os.path.join( - self.BARCODE_SAMPLE_DIR, - "barcode-39-asn-invalid.pdf", - ) - doc_barcode_info = barcodes.scan_file_for_barcodes( - test_file, - ) - - asn = barcodes.get_asn_from_barcodes(doc_barcode_info.barcodes) - - self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertEqual(asn, None) - - @override_settings(CONSUMER_ASN_BARCODE_PREFIX="CUSTOM-PREFIX-") - def test_scan_file_for_asn_custom_prefix(self): - """ - GIVEN: - - PDF containing an ASN barcode with custom prefix - - The ASN value is 123 - WHEN: - - File is scanned for barcodes - THEN: - - The ASN is located - - The ASN integer value is correct - """ - test_file = os.path.join( - self.BARCODE_SAMPLE_DIR, - "barcode-39-asn-custom-prefix.pdf", - ) - doc_barcode_info = barcodes.scan_file_for_barcodes( - test_file, - ) - asn = barcodes.get_asn_from_barcodes(doc_barcode_info.barcodes) - - self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertEqual(asn, 123) - - @override_settings(CONSUMER_ENABLE_ASN_BARCODE=True) - def test_consume_barcode_file_asn_assignment(self): - """ - GIVEN: - - PDF containing an ASN barcode - - The ASN value is 123 - WHEN: - - File is scanned for barcodes - THEN: - - The ASN is located - - The ASN integer value is correct - - The ASN is provided as the override value to the consumer - """ - test_file = os.path.join( - self.BARCODE_SAMPLE_DIR, - "barcode-39-asn-123.pdf", - ) - - dst = os.path.join(settings.SCRATCH_DIR, "barcode-39-asn-123.pdf") - shutil.copy(test_file, dst) - - with mock.patch("documents.consumer.Consumer.try_consume_file") as mocked_call: - tasks.consume_file(dst) - - args, kwargs = mocked_call.call_args - - self.assertEqual(kwargs["override_asn"], 123) - @override_settings(CONSUMER_ENABLE_ASN_BARCODE=True) def test_asn_too_large(self): """ diff --git a/src/documents/tests/utils.py b/src/documents/tests/utils.py index c52c9be92..b2ec0d024 100644 --- a/src/documents/tests/utils.py +++ b/src/documents/tests/utils.py @@ -3,6 +3,7 @@ import shutil import tempfile from collections import namedtuple from contextlib import contextmanager +from unittest import mock from django.apps import apps from django.db import connection @@ -86,6 +87,30 @@ class DirectoriesMixin: remove_dirs(self.dirs) +class ConsumerProgressMixin: + def setUp(self) -> None: + self.send_progress_patcher = mock.patch( + "documents.consumer.Consumer._send_progress", + ) + self.send_progress_mock = self.send_progress_patcher.start() + super().setUp() + + def tearDown(self) -> None: + super().tearDown() + self.send_progress_patcher.stop() + + +class DocumentConsumeDelayMixin: + def setUp(self) -> None: + self.consume_file_patcher = mock.patch("documents.tasks.consume_file.delay") + self.consume_file_mock = self.consume_file_patcher.start() + super().setUp() + + def tearDown(self) -> None: + super().tearDown() + self.consume_file_patcher.stop() + + class TestMigrations(TransactionTestCase): @property def app(self): From 9784ea4a602df9f8cb1d627b2d370d472f3a6a48 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Fri, 27 Jan 2023 11:11:09 -0800 Subject: [PATCH 06/32] Minor tweak to password test to ensure the right lines were hit --- src/documents/tests/test_barcodes.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/documents/tests/test_barcodes.py b/src/documents/tests/test_barcodes.py index 1ff698858..4f7f1278a 100644 --- a/src/documents/tests/test_barcodes.py +++ b/src/documents/tests/test_barcodes.py @@ -845,9 +845,14 @@ class TestBarcode(DirectoriesMixin, TestCase): - Scanning handles the exception without crashing """ test_file = os.path.join(self.SAMPLE_DIR, "password-is-test.pdf") - doc_barcode_info = barcodes.scan_file_for_barcodes( - test_file, - ) + with self.assertLogs("paperless.barcodes", level="WARNING") as cm: + doc_barcode_info = barcodes.scan_file_for_barcodes( + test_file, + ) + warning = cm.output[0] + expected_str = "WARNING:paperless.barcodes:File is likely password protected, not checking for barcodes" + self.assertTrue(warning.startswith(expected_str)) + separator_page_numbers = barcodes.get_separating_barcodes( doc_barcode_info.barcodes, ) From 7dd9a4e089dd5fcc68b887045e92f8c563a06828 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Sat, 28 Jan 2023 09:32:40 -0800 Subject: [PATCH 07/32] Changes the consumer to work on a temporary copy and provies that copy to the pre-consume script for modifications --- src/documents/consumer.py | 35 +++++++++++++++++++++------- src/documents/tests/test_consumer.py | 26 +++++++++++++++++++-- 2 files changed, 50 insertions(+), 11 deletions(-) diff --git a/src/documents/consumer.py b/src/documents/consumer.py index bc344abb9..8c80304d3 100644 --- a/src/documents/consumer.py +++ b/src/documents/consumer.py @@ -1,7 +1,10 @@ import datetime import hashlib import os +import shutil +import tempfile import uuid +from pathlib import Path from subprocess import CompletedProcess from subprocess import run from typing import Optional @@ -94,7 +97,8 @@ class Consumer(LoggingMixin): def __init__(self): super().__init__() - self.path = None + self.path: Optional[Path] = None + self.original_path: Optional[Path] = None self.filename = None self.override_title = None self.override_correspondent_id = None @@ -167,16 +171,18 @@ class Consumer(LoggingMixin): self.log("info", f"Executing pre-consume script {settings.PRE_CONSUME_SCRIPT}") - filepath_arg = os.path.normpath(self.path) + working_file_path = str(self.path) + original_file_path = str(self.original_path) script_env = os.environ.copy() - script_env["DOCUMENT_SOURCE_PATH"] = filepath_arg + script_env["DOCUMENT_SOURCE_PATH"] = original_file_path + script_env["DOCUMENT_WORKING_PATH"] = working_file_path try: completed_proc = run( args=[ settings.PRE_CONSUME_SCRIPT, - filepath_arg, + original_file_path, ], env=script_env, capture_output=True, @@ -195,7 +201,7 @@ class Consumer(LoggingMixin): exception=e, ) - def run_post_consume_script(self, document): + def run_post_consume_script(self, document: Document): if not settings.POST_CONSUME_SCRIPT: return @@ -285,8 +291,8 @@ class Consumer(LoggingMixin): Return the document object if it was successfully created. """ - self.path = path - self.filename = override_filename or os.path.basename(path) + self.path = Path(path).resolve() + self.filename = override_filename or self.path.name self.override_title = override_title self.override_correspondent_id = override_correspondent_id self.override_document_type_id = override_document_type_id @@ -311,6 +317,15 @@ class Consumer(LoggingMixin): self.log("info", f"Consuming {self.filename}") + # For the actual work, copy the file into a tempdir + self.original_path = self.path + tempdir = tempfile.TemporaryDirectory( + prefix="paperless-ngx", + dir=settings.SCRATCH_DIR, + ) + self.path = Path(tempdir.name) / Path(self.filename) + shutil.copy(self.original_path, self.path) + # Determine the parser class. mime_type = magic.from_file(self.path, mime=True) @@ -453,11 +468,12 @@ class Consumer(LoggingMixin): # Delete the file only if it was successfully consumed self.log("debug", f"Deleting file {self.path}") os.unlink(self.path) + self.original_path.unlink() # https://github.com/jonaswinkler/paperless-ng/discussions/1037 shadow_file = os.path.join( - os.path.dirname(self.path), - "._" + os.path.basename(self.path), + os.path.dirname(self.original_path), + "._" + os.path.basename(self.original_path), ) if os.path.isfile(shadow_file): @@ -474,6 +490,7 @@ class Consumer(LoggingMixin): ) finally: document_parser.cleanup() + tempdir.cleanup() self.run_post_consume_script(document) diff --git a/src/documents/tests/test_consumer.py b/src/documents/tests/test_consumer.py index dc86de331..de368018f 100644 --- a/src/documents/tests/test_consumer.py +++ b/src/documents/tests/test_consumer.py @@ -833,7 +833,8 @@ class PreConsumeTestCase(TestCase): with tempfile.NamedTemporaryFile() as script: with override_settings(PRE_CONSUME_SCRIPT=script.name): c = Consumer() - c.path = "path-to-file" + c.original_path = "path-to-file" + c.path = "/tmp/somewhere/path-to-file" c.run_pre_consume_script() m.assert_called_once() @@ -841,10 +842,19 @@ class PreConsumeTestCase(TestCase): args, kwargs = m.call_args command = kwargs["args"] + environment = kwargs["env"] self.assertEqual(command[0], script.name) self.assertEqual(command[1], "path-to-file") + self.assertDictContainsSubset( + { + "DOCUMENT_SOURCE_PATH": c.original_path, + "DOCUMENT_WORKING_PATH": c.path, + }, + environment, + ) + @mock.patch("documents.consumer.Consumer.log") def test_script_with_output(self, mocked_log): """ @@ -961,9 +971,10 @@ class PostConsumeTestCase(TestCase): m.assert_called_once() - args, kwargs = m.call_args + _, kwargs = m.call_args command = kwargs["args"] + environment = kwargs["env"] self.assertEqual(command[0], script.name) self.assertEqual(command[1], str(doc.pk)) @@ -972,6 +983,17 @@ class PostConsumeTestCase(TestCase): self.assertEqual(command[7], "my_bank") self.assertCountEqual(command[8].split(","), ["a", "b"]) + self.assertDictContainsSubset( + { + "DOCUMENT_ID": str(doc.pk), + "DOCUMENT_DOWNLOAD_URL": f"/api/documents/{doc.pk}/download/", + "DOCUMENT_THUMBNAIL_URL": f"/api/documents/{doc.pk}/thumb/", + "DOCUMENT_CORRESPONDENT": "my_bank", + "DOCUMENT_TAGS": "a,b", + }, + environment, + ) + def test_script_exit_non_zero(self): """ GIVEN: From 7b9c0d65b99c55c7227f3cee6a6dcd2f829e7d67 Mon Sep 17 00:00:00 2001 From: Trenton Holmes <797416+stumpylog@users.noreply.github.com> Date: Sat, 28 Jan 2023 10:25:21 -0800 Subject: [PATCH 08/32] Documents the change to pre-consume script and improves the readability --- docs/advanced_usage.md | 60 ++++++++++++++++++++++++++++-------------- mkdocs.yml | 1 + 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/docs/advanced_usage.md b/docs/advanced_usage.md index 61b1c072e..9a1abcfff 100644 --- a/docs/advanced_usage.md +++ b/docs/advanced_usage.md @@ -121,7 +121,17 @@ Executed after the consumer sees a new document in the consumption folder, but before any processing of the document is performed. This script can access the following relevant environment variables set: -- `DOCUMENT_SOURCE_PATH` +| Environment Variable | Description | +| ----------------------- | ------------------------------------------------------------ | +| `DOCUMENT_SOURCE_PATH` | Original path of the consumed document | +| `DOCUMENT_WORKING_PATH` | Path to a copy of the original that consumption will work on | + +!!! note + + Pre-consume scripts which modify the document should only change + the `DOCUMENT_WORKING_PATH` file or a second consume task may + be triggered, leading to failures as two tasks work on the + same document path A simple but common example for this would be creating a simple script like this: @@ -130,7 +140,7 @@ like this: ```bash #!/usr/bin/env bash -pdf2pdfocr.py -i ${DOCUMENT_SOURCE_PATH} +pdf2pdfocr.py -i ${DOCUMENT_WORKING_PATH} ``` `/etc/paperless.conf` @@ -157,26 +167,36 @@ Executed after the consumer has successfully processed a document and has moved it into paperless. It receives the following environment variables: -- `DOCUMENT_ID` -- `DOCUMENT_FILE_NAME` -- `DOCUMENT_CREATED` -- `DOCUMENT_MODIFIED` -- `DOCUMENT_ADDED` -- `DOCUMENT_SOURCE_PATH` -- `DOCUMENT_ARCHIVE_PATH` -- `DOCUMENT_THUMBNAIL_PATH` -- `DOCUMENT_DOWNLOAD_URL` -- `DOCUMENT_THUMBNAIL_URL` -- `DOCUMENT_CORRESPONDENT` -- `DOCUMENT_TAGS` -- `DOCUMENT_ORIGINAL_FILENAME` +| Environment Variable | Description | +| ---------------------------- | --------------------------------------------- | +| `DOCUMENT_ID` | Database primary key of the document | +| `DOCUMENT_FILE_NAME` | Formatted filename, not including paths | +| `DOCUMENT_CREATED` | Date & time when document created | +| `DOCUMENT_MODIFIED` | Date & time when document was last modified | +| `DOCUMENT_ADDED` | Date & time when document was added | +| `DOCUMENT_SOURCE_PATH` | Path to the original document file | +| `DOCUMENT_ARCHIVE_PATH` | Path to the generate archive file (if any) | +| `DOCUMENT_THUMBNAIL_PATH` | Path to the generated thumbnail | +| `DOCUMENT_DOWNLOAD_URL` | URL for document download | +| `DOCUMENT_THUMBNAIL_URL` | URL for the document thumbnail | +| `DOCUMENT_CORRESPONDENT` | Assigned correspondent (if any) | +| `DOCUMENT_TAGS` | Comma separated list of tags applied (if any) | +| `DOCUMENT_ORIGINAL_FILENAME` | Filename of original document | -The script can be in any language, but for a simple shell script -example, you can take a look at -[post-consumption-example.sh](https://github.com/paperless-ngx/paperless-ngx/blob/main/scripts/post-consumption-example.sh) -in this project. +The script can be in any language, A simple shell script example: -The post consumption script cannot cancel the consumption process. +```bash title="post-consumption-example" +--8<-- "./scripts/post-consumption-example.sh" +``` + +!!! note + + The post consumption script cannot cancel the consumption process. + +!!! warning + + The post consumption script should not modify the document files + directly The script's stdout and stderr will be logged line by line to the webserver log, along with the exit code of the script. diff --git a/mkdocs.yml b/mkdocs.yml index 6314a44d3..03f24c4f3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -41,6 +41,7 @@ markdown_extensions: anchor_linenums: true - pymdownx.superfences - pymdownx.inlinehilite + - pymdownx.snippets strict: true nav: - index.md From 0a47fba9ae1c624d05d6352cd045db41dfec6735 Mon Sep 17 00:00:00 2001 From: Trenton Holmes <797416+stumpylog@users.noreply.github.com> Date: Sun, 29 Jan 2023 08:42:23 -0800 Subject: [PATCH 09/32] Bumps version to 1.12.2 --- src-ui/src/environments/environment.prod.ts | 2 +- src/paperless/version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src-ui/src/environments/environment.prod.ts b/src-ui/src/environments/environment.prod.ts index 16cbe7df6..e91b67d64 100644 --- a/src-ui/src/environments/environment.prod.ts +++ b/src-ui/src/environments/environment.prod.ts @@ -5,7 +5,7 @@ export const environment = { apiBaseUrl: document.baseURI + 'api/', apiVersion: '2', appTitle: 'Paperless-ngx', - version: '1.12.1-dev', + version: '1.12.2', webSocketHost: window.location.host, webSocketProtocol: window.location.protocol == 'https:' ? 'wss:' : 'ws:', webSocketBaseUrl: base_url.pathname + 'ws/', diff --git a/src/paperless/version.py b/src/paperless/version.py index 36569e2e5..843ae7616 100644 --- a/src/paperless/version.py +++ b/src/paperless/version.py @@ -1,7 +1,7 @@ from typing import Final from typing import Tuple -__version__: Final[Tuple[int, int, int]] = (1, 12, 1) +__version__: Final[Tuple[int, int, int]] = (1, 12, 2) # Version string like X.Y.Z __full_version_str__: Final[str] = ".".join(map(str, __version__)) # Version string like X.Y From b8c3e564c6ec716b26cd751189a1eeb049695d9a Mon Sep 17 00:00:00 2001 From: Trenton Holmes <797416+stumpylog@users.noreply.github.com> Date: Sun, 29 Jan 2023 08:52:01 -0800 Subject: [PATCH 10/32] Reset to -dev version tag --- src-ui/src/environments/environment.prod.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-ui/src/environments/environment.prod.ts b/src-ui/src/environments/environment.prod.ts index e91b67d64..5b1da2d7a 100644 --- a/src-ui/src/environments/environment.prod.ts +++ b/src-ui/src/environments/environment.prod.ts @@ -5,7 +5,7 @@ export const environment = { apiBaseUrl: document.baseURI + 'api/', apiVersion: '2', appTitle: 'Paperless-ngx', - version: '1.12.2', + version: '1.12.2-dev', webSocketHost: window.location.host, webSocketProtocol: window.location.protocol == 'https:' ? 'wss:' : 'ws:', webSocketBaseUrl: base_url.pathname + 'ws/', From bb211ee7797fed748e244e8f4e303e801f8878a4 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Mon, 30 Jan 2023 11:27:18 -0800 Subject: [PATCH 11/32] Removes extra install of Python and pip. The base image provides these --- Dockerfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6588802bb..658a9fadb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -61,10 +61,6 @@ ARG PSYCOPG2_VERSION # Packages need for running ARG RUNTIME_PACKAGES="\ - # Python - python3 \ - python3-pip \ - python3-setuptools \ # General utils curl \ # Docker specific From 9ee324915ffda857a8b6e1a2ba6bf136972a1351 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Mon, 30 Jan 2023 11:35:04 -0800 Subject: [PATCH 12/32] Upgrades supervisor to 4.2.5 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 6588802bb..e04ca8241 100644 --- a/Dockerfile +++ b/Dockerfile @@ -128,7 +128,7 @@ RUN set -eux \ && apt-get install --yes --quiet --no-install-recommends ${RUNTIME_PACKAGES} \ && rm -rf /var/lib/apt/lists/* \ && echo "Installing supervisor" \ - && python3 -m pip install --default-timeout=1000 --upgrade --no-cache-dir supervisor==4.2.4 + && python3 -m pip install --default-timeout=1000 --upgrade --no-cache-dir supervisor==4.2.5 # Copy gunicorn config # Changes very infrequently From dae4550bc376044ef49eddd148dc0c968969f32c Mon Sep 17 00:00:00 2001 From: Kexogg <65514050+Kexogg@users.noreply.github.com> Date: Wed, 1 Feb 2023 00:33:06 +0500 Subject: [PATCH 13/32] Fix importing files with non-ascii names (#2555) --- src/paperless_tika/parsers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/paperless_tika/parsers.py b/src/paperless_tika/parsers.py index f34ecbbab..39ab75d79 100644 --- a/src/paperless_tika/parsers.py +++ b/src/paperless_tika/parsers.py @@ -90,7 +90,7 @@ class TikaDocumentParser(DocumentParser): with open(document_path, "rb") as document_handle: files = { "files": ( - file_name or os.path.basename(document_path), + "convert" + os.path.splitext(document_path)[-1], document_handle, ), } From dc7bef5d4818d0022893dbff251df11ec321e0cf Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Tue, 31 Jan 2023 09:54:11 -0800 Subject: [PATCH 14/32] Fixes relative date Whoosh queries and adds testing to ensure it remains working with multiple timezones --- src/documents/index.py | 3 +- src/documents/tests/test_api.py | 266 ++++++++++++++++++++++++++++++++ 2 files changed, 268 insertions(+), 1 deletion(-) diff --git a/src/documents/index.py b/src/documents/index.py index 7add84bb7..575e57e8b 100644 --- a/src/documents/index.py +++ b/src/documents/index.py @@ -5,6 +5,7 @@ from contextlib import contextmanager from dateutil.parser import isoparse from django.conf import settings +from django.utils import timezone from documents.models import Comment from documents.models import Document from whoosh import classify @@ -262,7 +263,7 @@ class DelayedFullTextQuery(DelayedQuery): ["content", "title", "correspondent", "tag", "type", "comments"], self.searcher.ixreader.schema, ) - qp.add_plugin(DateParserPlugin()) + qp.add_plugin(DateParserPlugin(basedate=timezone.now())) q = qp.parse(q_str) corrected = self.searcher.correct_query(q, q_str) diff --git a/src/documents/tests/test_api.py b/src/documents/tests/test_api.py index 4547288d2..636bfb0e5 100644 --- a/src/documents/tests/test_api.py +++ b/src/documents/tests/test_api.py @@ -7,6 +7,7 @@ import tempfile import urllib.request import uuid import zipfile +from datetime import timedelta from pathlib import Path from unittest import mock from unittest.mock import MagicMock @@ -23,6 +24,7 @@ from django.conf import settings from django.contrib.auth.models import User from django.test import override_settings from django.utils import timezone +from dateutil.relativedelta import relativedelta from documents import bulk_edit from documents import index from documents.models import Correspondent @@ -505,6 +507,270 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): response = self.client.get("/api/documents/?query=content&page=3&page_size=10") self.assertEqual(response.status_code, 404) + @override_settings( + TIME_ZONE="UTC", + ) + def test_search_added_in_last_week(self): + """ + GIVEN: + - Three documents added right now + - The timezone is UTC time + WHEN: + - Query for documents added in the last 7 days + THEN: + - The two recent documents are returned + """ + d1 = Document.objects.create( + title="invoice", + content="the thing i bought at a shop and paid with bank account", + checksum="A", + pk=1, + ) + d2 = Document.objects.create( + title="bank statement 1", + content="things i paid for in august", + pk=2, + checksum="B", + ) + d3 = Document.objects.create( + title="bank statement 3", + content="things i paid for in september", + pk=3, + checksum="C", + ) + with index.open_index_writer() as writer: + index.update_document(writer, d1) + index.update_document(writer, d2) + index.update_document(writer, d3) + + response = self.client.get("/api/documents/?query=added:[-1 week to now]") + results = response.data["results"] + # Expect 3 documents returned + self.assertEqual(len(results), 3) + + for idx, subset in enumerate( + [ + {"id": 1, "title": "invoice"}, + {"id": 2, "title": "bank statement 1"}, + {"id": 3, "title": "bank statement 3"}, + ], + ): + result = results[idx] + # Assert subset in results + self.assertDictEqual(result, {**result, **subset}) + + @override_settings( + TIME_ZONE="America/Chicago", + ) + def test_search_added_in_last_week_with_timezone_behind(self): + """ + GIVEN: + - Two documents added right now + - One document added over a week ago + - The timezone is behind UTC time (-6) + WHEN: + - Query for documents added in the last 7 days + THEN: + - The two recent documents are returned + """ + d1 = Document.objects.create( + title="invoice", + content="the thing i bought at a shop and paid with bank account", + checksum="A", + pk=1, + ) + d2 = Document.objects.create( + title="bank statement 1", + content="things i paid for in august", + pk=2, + checksum="B", + ) + d3 = Document.objects.create( + title="bank statement 3", + content="things i paid for in september", + pk=3, + checksum="C", + # 7 days, 1 hour and 1 minute ago + added=timezone.now() - timedelta(days=7, hours=1, minutes=1), + ) + with index.open_index_writer() as writer: + index.update_document(writer, d1) + index.update_document(writer, d2) + index.update_document(writer, d3) + + response = self.client.get("/api/documents/?query=added:[-1 week to now]") + results = response.data["results"] + + # Expect 2 documents returned + self.assertEqual(len(results), 2) + + for idx, subset in enumerate( + [{"id": 1, "title": "invoice"}, {"id": 2, "title": "bank statement 1"}], + ): + result = results[idx] + # Assert subset in results + self.assertDictEqual(result, {**result, **subset}) + + @override_settings( + TIME_ZONE="Europe/Sofia", + ) + def test_search_added_in_last_week_with_timezone_ahead(self): + """ + GIVEN: + - Two documents added right now + - One document added over a week ago + - The timezone is behind UTC time (+2) + WHEN: + - Query for documents added in the last 7 days + THEN: + - The two recent documents are returned + """ + d1 = Document.objects.create( + title="invoice", + content="the thing i bought at a shop and paid with bank account", + checksum="A", + pk=1, + ) + d2 = Document.objects.create( + title="bank statement 1", + content="things i paid for in august", + pk=2, + checksum="B", + ) + d3 = Document.objects.create( + title="bank statement 3", + content="things i paid for in september", + pk=3, + checksum="C", + # 7 days, 1 hour and 1 minute ago + added=timezone.now() - timedelta(days=7, hours=1, minutes=1), + ) + with index.open_index_writer() as writer: + index.update_document(writer, d1) + index.update_document(writer, d2) + index.update_document(writer, d3) + + response = self.client.get("/api/documents/?query=added:[-1 week to now]") + results = response.data["results"] + + # Expect 2 documents returned + self.assertEqual(len(results), 2) + + for idx, subset in enumerate( + [{"id": 1, "title": "invoice"}, {"id": 2, "title": "bank statement 1"}], + ): + result = results[idx] + # Assert subset in results + self.assertDictEqual(result, {**result, **subset}) + + def test_search_added_in_last_month(self): + """ + GIVEN: + - One document added right now + - One documents added about a week ago + - One document added over 1 month + WHEN: + - Query for documents added in the last month + THEN: + - The two recent documents are returned + """ + d1 = Document.objects.create( + title="invoice", + content="the thing i bought at a shop and paid with bank account", + checksum="A", + pk=1, + ) + d2 = Document.objects.create( + title="bank statement 1", + content="things i paid for in august", + pk=2, + checksum="B", + # 1 month, 1 day ago + added=timezone.now() - relativedelta(months=1, days=1), + ) + d3 = Document.objects.create( + title="bank statement 3", + content="things i paid for in september", + pk=3, + checksum="C", + # 7 days, 1 hour and 1 minute ago + added=timezone.now() - timedelta(days=7, hours=1, minutes=1), + ) + + with index.open_index_writer() as writer: + index.update_document(writer, d1) + index.update_document(writer, d2) + index.update_document(writer, d3) + + response = self.client.get("/api/documents/?query=added:[-1 month to now]") + results = response.data["results"] + + # Expect 2 documents returned + self.assertEqual(len(results), 2) + + for idx, subset in enumerate( + [{"id": 1, "title": "invoice"}, {"id": 3, "title": "bank statement 3"}], + ): + result = results[idx] + # Assert subset in results + self.assertDictEqual(result, {**result, **subset}) + + @override_settings( + TIME_ZONE="America/Denver", + ) + def test_search_added_in_last_month_timezone_behind(self): + """ + GIVEN: + - One document added right now + - One documents added about a week ago + - One document added over 1 month + - The timezone is behind UTC time (-6 or -7) + WHEN: + - Query for documents added in the last month + THEN: + - The two recent documents are returned + """ + d1 = Document.objects.create( + title="invoice", + content="the thing i bought at a shop and paid with bank account", + checksum="A", + pk=1, + ) + d2 = Document.objects.create( + title="bank statement 1", + content="things i paid for in august", + pk=2, + checksum="B", + # 1 month, 1 day ago + added=timezone.now() - relativedelta(months=1, days=1), + ) + d3 = Document.objects.create( + title="bank statement 3", + content="things i paid for in september", + pk=3, + checksum="C", + # 7 days, 1 hour and 1 minute ago + added=timezone.now() - timedelta(days=7, hours=1, minutes=1), + ) + + with index.open_index_writer() as writer: + index.update_document(writer, d1) + index.update_document(writer, d2) + index.update_document(writer, d3) + + response = self.client.get("/api/documents/?query=added:[-1 month to now]") + results = response.data["results"] + + # Expect 2 documents returned + self.assertEqual(len(results), 2) + + for idx, subset in enumerate( + [{"id": 1, "title": "invoice"}, {"id": 3, "title": "bank statement 3"}], + ): + result = results[idx] + # Assert subset in results + self.assertDictEqual(result, {**result, **subset}) + @mock.patch("documents.index.autocomplete") def test_search_autocomplete(self, m): m.side_effect = lambda ix, term, limit: [term for _ in range(limit)] From b85d39b189cb4c5d265be29ad72d3438e478e097 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Tue, 31 Jan 2023 12:27:44 -0800 Subject: [PATCH 15/32] Fixes commenting error --- src/documents/tests/test_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/documents/tests/test_api.py b/src/documents/tests/test_api.py index 636bfb0e5..b6d817de1 100644 --- a/src/documents/tests/test_api.py +++ b/src/documents/tests/test_api.py @@ -518,7 +518,7 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): WHEN: - Query for documents added in the last 7 days THEN: - - The two recent documents are returned + - All three recent documents are returned """ d1 = Document.objects.create( title="invoice", From 31bcb613ada3b262395ab1c6bb243f5aa7a4e569 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Tue, 31 Jan 2023 14:26:04 -0800 Subject: [PATCH 16/32] Configure ImageMagick on the runner to allow more tests to run by default --- .github/workflows/ci.yml | 6 ++++-- src/paperless_mail/tests/test_parsers_live.py | 15 --------------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index adf03d4bb..68eb89a30 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -113,8 +113,6 @@ jobs: PAPERLESS_MAIL_TEST_HOST: ${{ secrets.TEST_MAIL_HOST }} PAPERLESS_MAIL_TEST_USER: ${{ secrets.TEST_MAIL_USER }} PAPERLESS_MAIL_TEST_PASSWD: ${{ secrets.TEST_MAIL_PASSWD }} - # Skip Tests which require convert - PAPERLESS_TEST_SKIP_CONVERT: 1 # Enable Gotenberg end to end testing GOTENBERG_LIVE: 1 steps: @@ -145,6 +143,10 @@ jobs: run: | sudo apt-get update -qq sudo apt-get install -qq --no-install-recommends unpaper tesseract-ocr imagemagick ghostscript libzbar0 poppler-utils + - + name: Configure ImageMagick + run: | + sudo cp docker/imagemagick-policy.xml /etc/ImageMagick-6/policy.xml - name: Install Python dependencies run: | diff --git a/src/paperless_mail/tests/test_parsers_live.py b/src/paperless_mail/tests/test_parsers_live.py index 7ea56d7e4..90c172d07 100644 --- a/src/paperless_mail/tests/test_parsers_live.py +++ b/src/paperless_mail/tests/test_parsers_live.py @@ -67,11 +67,6 @@ class TestParserLive(TestCase): return result - # Only run if convert is available - @pytest.mark.skipif( - "PAPERLESS_TEST_SKIP_CONVERT" in os.environ, - reason="PAPERLESS_TEST_SKIP_CONVERT set, skipping Test", - ) @mock.patch("paperless_mail.parsers.MailDocumentParser.generate_pdf") def test_get_thumbnail(self, mock_generate_pdf: mock.MagicMock): """ @@ -204,11 +199,6 @@ class TestParserLive(TestCase): "GOTENBERG_LIVE" not in os.environ, reason="No gotenberg server", ) - # Only run if convert is available - @pytest.mark.skipif( - "PAPERLESS_TEST_SKIP_CONVERT" in os.environ, - reason="PAPERLESS_TEST_SKIP_CONVERT set, skipping Test", - ) def test_generate_pdf_from_mail(self): """ GIVEN: @@ -301,11 +291,6 @@ class TestParserLive(TestCase): "GOTENBERG_LIVE" not in os.environ, reason="No gotenberg server", ) - # Only run if convert is available - @pytest.mark.skipif( - "PAPERLESS_TEST_SKIP_CONVERT" in os.environ, - reason="PAPERLESS_TEST_SKIP_CONVERT set, skipping Test", - ) def test_generate_pdf_from_html(self): """ GIVEN: From 61f7e73961f74c4aae184f28a11deee7dbc819a5 Mon Sep 17 00:00:00 2001 From: Trenton Holmes <797416+stumpylog@users.noreply.github.com> Date: Tue, 31 Jan 2023 20:48:18 -0800 Subject: [PATCH 17/32] Fixes status payload filename after splitting --- src/documents/tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/documents/tasks.py b/src/documents/tasks.py index 77b48e33d..34b75ce12 100644 --- a/src/documents/tasks.py +++ b/src/documents/tasks.py @@ -164,7 +164,7 @@ def consume_file( # notify the sender, otherwise the progress bar # in the UI stays stuck payload = { - "filename": override_filename, + "filename": override_filename or path.name, "task_id": task_id, "current_progress": 100, "max_progress": 100, From 658d372cd2e98d009fabd115855e374d64dca5a9 Mon Sep 17 00:00:00 2001 From: Fabian Ohler Date: Wed, 1 Feb 2023 10:13:30 +0100 Subject: [PATCH 18/32] Feature: split documents on ASN barcode (#2554) * also split documents when an ASN barcode is found * linter * fix test case parameters * avoid pre-python-3.9 features * simplify dict-creation in tests * simplify dict-creation in tests for empty dicts * Add test cases for the splitting by ASN barcode feature * deleted supporting files for test case construction --- src/documents/barcodes.py | 53 ++++---- .../tests/samples/barcodes/split-by-asn-1.pdf | Bin 0 -> 89003 bytes .../tests/samples/barcodes/split-by-asn-2.pdf | Bin 0 -> 135966 bytes src/documents/tests/test_barcodes.py | 113 +++++++++++++++--- 4 files changed, 130 insertions(+), 36 deletions(-) create mode 100644 src/documents/tests/samples/barcodes/split-by-asn-1.pdf create mode 100644 src/documents/tests/samples/barcodes/split-by-asn-2.pdf diff --git a/src/documents/barcodes.py b/src/documents/barcodes.py index 6e3ecfe05..9adb8aeea 100644 --- a/src/documents/barcodes.py +++ b/src/documents/barcodes.py @@ -5,6 +5,7 @@ import tempfile from dataclasses import dataclass from functools import lru_cache from pathlib import Path +from typing import Dict from typing import List from typing import Optional @@ -201,16 +202,25 @@ def scan_file_for_barcodes( return DocumentBarcodeInfo(pdf_filepath, barcodes) -def get_separating_barcodes(barcodes: List[Barcode]) -> List[int]: +def get_separating_barcodes(barcodes: List[Barcode]) -> Dict[int, bool]: """ Search the parsed barcodes for separators - and returns a list of page numbers, which - separate the file into new files. + and returns a dict of page numbers, which + separate the file into new files, together + with the information whether to keep the page. """ # filter all barcodes for the separator string # get the page numbers of the separating barcodes + separator_pages = {bc.page: False for bc in barcodes if bc.is_separator} + if not settings.CONSUMER_ENABLE_ASN_BARCODE: + return separator_pages - return list({bc.page for bc in barcodes if bc.is_separator}) + # add the page numbers of the ASN barcodes + # (except for first page, that might lead to infinite loops). + return { + **separator_pages, + **{bc.page: True for bc in barcodes if bc.is_asn and bc.page != 0}, + } def get_asn_from_barcodes(barcodes: List[Barcode]) -> Optional[int]: @@ -242,10 +252,11 @@ def get_asn_from_barcodes(barcodes: List[Barcode]) -> Optional[int]: return asn -def separate_pages(filepath: str, pages_to_split_on: List[int]) -> List[str]: +def separate_pages(filepath: str, pages_to_split_on: Dict[int, bool]) -> List[str]: """ Separate the provided pdf file on the pages_to_split_on. - The pages which are defined by page_numbers will be removed. + The pages which are defined by the keys in page_numbers + will be removed if the corresponding value is false. Returns a list of (temporary) filepaths to consume. These will need to be deleted later. """ @@ -261,26 +272,28 @@ def separate_pages(filepath: str, pages_to_split_on: List[int]) -> List[str]: fname = os.path.splitext(os.path.basename(filepath))[0] pdf = Pdf.open(filepath) + # Start with an empty document + current_document: List[Page] = [] # A list of documents, ie a list of lists of pages - documents: List[List[Page]] = [] - # A single document, ie a list of pages - document: List[Page] = [] + documents: List[List[Page]] = [current_document] for idx, page in enumerate(pdf.pages): # Keep building the new PDF as long as it is not a # separator index if idx not in pages_to_split_on: - document.append(page) - # Make sure to append the very last document to the documents - if idx == (len(pdf.pages) - 1): - documents.append(document) - document = [] - else: - # This is a split index, save the current PDF pages, and restart - # a new destination page listing - logger.debug(f"Starting new document at idx {idx}") - documents.append(document) - document = [] + current_document.append(page) + continue + + # This is a split index + # Start a new destination page listing + logger.debug(f"Starting new document at idx {idx}") + current_document = [] + documents.append(current_document) + keep_page = pages_to_split_on[idx] + if keep_page: + # Keep the page + # (new document is started by asn barcode) + current_document.append(page) documents = [x for x in documents if len(x)] diff --git a/src/documents/tests/samples/barcodes/split-by-asn-1.pdf b/src/documents/tests/samples/barcodes/split-by-asn-1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..82374b9d2a82a0c10e59d21a1fcbe3b0fa1a63b9 GIT binary patch literal 89003 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 literal 0 HcmV?d00001 diff --git a/src/documents/tests/samples/barcodes/split-by-asn-2.pdf b/src/documents/tests/samples/barcodes/split-by-asn-2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..05cc16abe3b1d87ba7368fcc9070957fe4978e15 GIT binary patch literal 135966 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�$Wz=CKo^q=H(K0Vo^+SkbA_KZzoc$x% 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

~TG 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 Ohx@3r^Jf9mB!2*A8%Blz literal 0 HcmV?d00001 diff --git a/src/documents/tests/test_barcodes.py b/src/documents/tests/test_barcodes.py index 4f7f1278a..86c53755b 100644 --- a/src/documents/tests/test_barcodes.py +++ b/src/documents/tests/test_barcodes.py @@ -294,7 +294,7 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertListEqual(separator_page_numbers, [0]) + self.assertDictEqual(separator_page_numbers, {0: False}) def test_scan_file_for_separating_barcodes_none_present(self): """ @@ -314,7 +314,7 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertListEqual(separator_page_numbers, []) + self.assertDictEqual(separator_page_numbers, {}) def test_scan_file_for_separating_barcodes_middle_page(self): """ @@ -337,7 +337,7 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertListEqual(separator_page_numbers, [1]) + self.assertDictEqual(separator_page_numbers, {1: False}) def test_scan_file_for_separating_barcodes_multiple_pages(self): """ @@ -360,7 +360,7 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertListEqual(separator_page_numbers, [2, 5]) + self.assertDictEqual(separator_page_numbers, {2: False, 5: False}) def test_scan_file_for_separating_barcodes_upside_down(self): """ @@ -384,7 +384,7 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertListEqual(separator_page_numbers, [1]) + self.assertDictEqual(separator_page_numbers, {1: False}) def test_scan_file_for_separating_barcodes_fax_decode(self): """ @@ -407,7 +407,7 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertListEqual(separator_page_numbers, [1]) + self.assertDictEqual(separator_page_numbers, {1: False}) def test_scan_file_for_separating_qr_barcodes(self): """ @@ -431,7 +431,7 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertListEqual(separator_page_numbers, [0]) + self.assertDictEqual(separator_page_numbers, {0: False}) @override_settings(CONSUMER_BARCODE_STRING="CUSTOM BARCODE") def test_scan_file_for_separating_custom_barcodes(self): @@ -456,7 +456,7 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertListEqual(separator_page_numbers, [0]) + self.assertDictEqual(separator_page_numbers, {0: False}) @override_settings(CONSUMER_BARCODE_STRING="CUSTOM BARCODE") def test_scan_file_for_separating_custom_qr_barcodes(self): @@ -482,7 +482,7 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertListEqual(separator_page_numbers, [0]) + self.assertDictEqual(separator_page_numbers, {0: False}) @override_settings(CONSUMER_BARCODE_STRING="CUSTOM BARCODE") def test_scan_file_for_separating_custom_128_barcodes(self): @@ -508,7 +508,7 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertListEqual(separator_page_numbers, [0]) + self.assertDictEqual(separator_page_numbers, {0: False}) def test_scan_file_for_separating_wrong_qr_barcodes(self): """ @@ -533,7 +533,7 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertListEqual(separator_page_numbers, []) + self.assertDictEqual(separator_page_numbers, {}) @override_settings(CONSUMER_BARCODE_STRING="ADAR-NEXTDOC") def test_scan_file_for_separating_qr_barcodes(self): @@ -558,7 +558,7 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertGreater(len(doc_barcode_info.barcodes), 0) - self.assertListEqual(separator_page_numbers, [1]) + self.assertDictEqual(separator_page_numbers, {1: False}) def test_separate_pages(self): """ @@ -573,7 +573,7 @@ class TestBarcode(DirectoriesMixin, TestCase): self.BARCODE_SAMPLE_DIR, "patch-code-t-middle.pdf", ) - documents = barcodes.separate_pages(test_file, [1]) + documents = barcodes.separate_pages(test_file, {1: False}) self.assertEqual(len(documents), 2) @@ -591,7 +591,7 @@ class TestBarcode(DirectoriesMixin, TestCase): self.BARCODE_SAMPLE_DIR, "patch-code-t-double.pdf", ) - pages = barcodes.separate_pages(test_file, [1, 2]) + pages = barcodes.separate_pages(test_file, {1: False, 2: False}) self.assertEqual(len(pages), 2) @@ -610,7 +610,7 @@ class TestBarcode(DirectoriesMixin, TestCase): "patch-code-t-middle.pdf", ) with self.assertLogs("paperless.barcodes", level="WARNING") as cm: - pages = barcodes.separate_pages(test_file, []) + pages = barcodes.separate_pages(test_file, {}) self.assertEqual(pages, []) self.assertEqual( cm.output, @@ -858,7 +858,88 @@ class TestBarcode(DirectoriesMixin, TestCase): ) self.assertEqual(doc_barcode_info.pdf_path, test_file) - self.assertListEqual(separator_page_numbers, []) + self.assertDictEqual(separator_page_numbers, {}) + + @override_settings( + CONSUMER_ENABLE_BARCODES=True, + CONSUMER_ENABLE_ASN_BARCODE=True, + ) + def test_separate_pages_by_asn_barcodes_and_patcht(self): + """ + GIVEN: + - Input PDF with a patch code on page 3 and ASN barcodes on pages 1,5,6,9,11 + WHEN: + - Input file is split on barcodes + THEN: + - Correct number of files produced, split correctly by correct pages + """ + test_file = os.path.join( + os.path.dirname(__file__), + self.BARCODE_SAMPLE_DIR, + "split-by-asn-2.pdf", + ) + + doc_barcode_info = barcodes.scan_file_for_barcodes( + test_file, + ) + separator_page_numbers = barcodes.get_separating_barcodes( + doc_barcode_info.barcodes, + ) + + self.assertEqual(test_file, doc_barcode_info.pdf_path) + self.assertDictEqual( + separator_page_numbers, + { + 2: False, + 4: True, + 5: True, + 8: True, + 10: True, + }, + ) + + document_list = barcodes.separate_pages(test_file, separator_page_numbers) + self.assertEqual(len(document_list), 6) + + @override_settings( + CONSUMER_ENABLE_BARCODES=True, + CONSUMER_ENABLE_ASN_BARCODE=True, + ) + def test_separate_pages_by_asn_barcodes(self): + """ + GIVEN: + - Input PDF with ASN barcodes on pages 1,3,4,7,9 + WHEN: + - Input file is split on barcodes + THEN: + - Correct number of files produced, split correctly by correct pages + """ + test_file = os.path.join( + os.path.dirname(__file__), + self.BARCODE_SAMPLE_DIR, + "split-by-asn-1.pdf", + ) + + doc_barcode_info = barcodes.scan_file_for_barcodes( + test_file, + ) + separator_page_numbers = barcodes.get_separating_barcodes( + doc_barcode_info.barcodes, + ) + + self.assertEqual(test_file, doc_barcode_info.pdf_path) + self.assertDictEqual( + separator_page_numbers, + { + 2: True, + 3: True, + 6: True, + 8: True, + }, + ) + + document_list = barcodes.separate_pages(test_file, separator_page_numbers) + self.assertEqual(len(document_list), 5) class TestAsnBarcodes(DirectoriesMixin, TestCase): From 8a281452b89def8f6ec53a9d2816d8882426e472 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Feb 2023 20:02:50 +0000 Subject: [PATCH 19/32] Bump @typescript-eslint/parser from 5.48.1 to 5.50.0 in /src-ui Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.48.1 to 5.50.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.50.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src-ui/package-lock.json | 143 +++++++++++++++++++++++++++++++++++---- src-ui/package.json | 2 +- 2 files changed, 131 insertions(+), 14 deletions(-) diff --git a/src-ui/package-lock.json b/src-ui/package-lock.json index d73d4b7ec..b4d1c6e40 100644 --- a/src-ui/package-lock.json +++ b/src-ui/package-lock.json @@ -45,7 +45,7 @@ "@types/jest": "28.1.6", "@types/node": "^18.7.23", "@typescript-eslint/eslint-plugin": "^5.43.0", - "@typescript-eslint/parser": "^5.43.0", + "@typescript-eslint/parser": "^5.50.0", "concurrently": "7.4.0", "eslint": "^8.31.0", "jest": "28.1.3", @@ -4739,14 +4739,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.1.tgz", - "integrity": "sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", + "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.48.1", - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/typescript-estree": "5.48.1", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/typescript-estree": "5.50.0", "debug": "^4.3.4" }, "engines": { @@ -4765,6 +4765,80 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", + "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", + "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", + "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", + "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.50.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.48.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.1.tgz", @@ -21459,15 +21533,58 @@ } }, "@typescript-eslint/parser": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.1.tgz", - "integrity": "sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", + "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.48.1", - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/typescript-estree": "5.48.1", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/typescript-estree": "5.50.0", "debug": "^4.3.4" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", + "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0" + } + }, + "@typescript-eslint/types": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", + "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", + "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", + "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.50.0", + "eslint-visitor-keys": "^3.3.0" + } + } } }, "@typescript-eslint/scope-manager": { diff --git a/src-ui/package.json b/src-ui/package.json index cbbb3fdc8..fa9544add 100644 --- a/src-ui/package.json +++ b/src-ui/package.json @@ -50,7 +50,7 @@ "@types/jest": "28.1.6", "@types/node": "^18.7.23", "@typescript-eslint/eslint-plugin": "^5.43.0", - "@typescript-eslint/parser": "^5.43.0", + "@typescript-eslint/parser": "^5.50.0", "concurrently": "7.4.0", "eslint": "^8.31.0", "jest": "28.1.3", From 87b1f5adec6043e13d9b364d455e3169236d949b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Feb 2023 20:02:12 +0000 Subject: [PATCH 20/32] Bump docker/build-push-action from 3 to 4 Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3 to 4. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v3...v4) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- .github/workflows/reusable-workflow-builder.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 68eb89a30..fec1e2b35 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -349,7 +349,7 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . file: ./Dockerfile diff --git a/.github/workflows/reusable-workflow-builder.yml b/.github/workflows/reusable-workflow-builder.yml index 340c87713..012e42b91 100644 --- a/.github/workflows/reusable-workflow-builder.yml +++ b/.github/workflows/reusable-workflow-builder.yml @@ -45,7 +45,7 @@ jobs: uses: docker/setup-qemu-action@v2 - name: Build ${{ fromJSON(inputs.build-json).name }} - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . file: ${{ inputs.dockerfile }} From 1547a698cb3af906d1ef153fddf8718d92f215d9 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Wed, 1 Feb 2023 13:05:56 -0800 Subject: [PATCH 21/32] Switches to Codecov for coverage reporting and status --- .codecov.yml | 19 +++++++++++++++++++ .github/workflows/ci.yml | 29 +++++++---------------------- README.md | 2 +- src/setup.cfg | 2 +- 4 files changed, 28 insertions(+), 24 deletions(-) create mode 100644 .codecov.yml diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 000000000..c11db1447 --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,19 @@ +# https://docs.codecov.com/docs/pull-request-comments +# codecov will only comment if coverage changes +comment: + require_changes: true +coverage: + status: + project: + default: + # https://docs.codecov.com/docs/commit-status#threshold + threshold: 1% + # https://docs.codecov.com/docs/commit-status#only_pulls + only_pulls: true + patch: + default: + # For the changed lines only, target 75% covered, but + # allow as low as 50% + target: 75% + threshold: 25% + only_pulls: true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fec1e2b35..ddb83425b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -119,8 +119,6 @@ jobs: - name: Checkout uses: actions/checkout@v3 - with: - fetch-depth: 0 - name: Start containers run: | @@ -162,27 +160,14 @@ jobs: cd src/ pipenv --python ${{ steps.setup-python.outputs.python-version }} run pytest -ra - - name: Get changed files - id: changed-files-specific - uses: tj-actions/changed-files@v35 + name: Upload coverage to Codecov + if: matrix.python-version == ${{ env.DEFAULT_PYTHON_VERSION }} + uses: codecov/codecov-action@v3 with: - files: | - src/** - - - name: List all changed files - run: | - for file in ${{ steps.changed-files-specific.outputs.all_changed_files }}; do - echo "${file} was changed" - done - - - name: Publish coverage results - if: matrix.python-version == ${{ env.DEFAULT_PYTHON_VERSION }} && steps.changed-files-specific.outputs.any_changed == 'true' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # https://github.com/coveralls-clients/coveralls-python/issues/251 - run: | - cd src/ - pipenv --python ${{ steps.setup-python.outputs.python-version }} run coveralls --service=github + # not required for public repos, but intermittently fails otherwise + token: ${{ secrets.CODECOV_TOKEN }} + # future expansion + flags: backend - name: Stop containers if: always() diff --git a/README.md b/README.md index a94fbac30..ca21d27ea 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![ci](https://github.com/paperless-ngx/paperless-ngx/workflows/ci/badge.svg)](https://github.com/paperless-ngx/paperless-ngx/actions) [![Crowdin](https://badges.crowdin.net/paperless-ngx/localized.svg)](https://crowdin.com/project/paperless-ngx) [![Documentation Status](https://img.shields.io/github/deployments/paperless-ngx/paperless-ngx/github-pages?label=docs)](https://docs.paperless-ngx.com) -[![Coverage Status](https://coveralls.io/repos/github/paperless-ngx/paperless-ngx/badge.svg?branch=master)](https://coveralls.io/github/paperless-ngx/paperless-ngx?branch=master) +[![codecov](https://codecov.io/gh/paperless-ngx/paperless-ngx/branch/main/graph/badge.svg?token=VK6OUPJ3TY)](https://codecov.io/gh/paperless-ngx/paperless-ngx) [![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/%23paperlessngx%3Amatrix.org) [![demo](https://cronitor.io/badges/ve7ItY/production/W5E_B9jkelG9ZbDiNHUPQEVH3MY.svg)](https://demo.paperless-ngx.com) diff --git a/src/setup.cfg b/src/setup.cfg index 409c5c7cd..dde4642eb 100644 --- a/src/setup.cfg +++ b/src/setup.cfg @@ -7,7 +7,7 @@ max-line-length = 88 [tool:pytest] DJANGO_SETTINGS_MODULE=paperless.settings -addopts = --pythonwarnings=all --cov --cov-report=html --numprocesses auto --quiet +addopts = --pythonwarnings=all --cov --cov-report=html --cov-report=xml --numprocesses auto --quiet env = PAPERLESS_DISABLE_DBHANDLER=true From 73b2c366dfc4e73447df2a3f48f20f4d519eee16 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 1 Feb 2023 22:20:59 -0800 Subject: [PATCH 22/32] Batch update npm packages --- src-ui/angular.json | 3 +- src-ui/package-lock.json | 14874 ++----------------------------------- src-ui/package.json | 32 +- 3 files changed, 834 insertions(+), 14075 deletions(-) diff --git a/src-ui/angular.json b/src-ui/angular.json index 36a4ef7cd..2dcf486be 100644 --- a/src-ui/angular.json +++ b/src-ui/angular.json @@ -192,7 +192,8 @@ "cli": { "schematicCollections": [ "@angular-eslint/schematics" - ] + ], + "analytics": false }, "schematics": { "@angular-eslint/schematics:application": { diff --git a/src-ui/package-lock.json b/src-ui/package-lock.json index b4d1c6e40..31f0022ab 100644 --- a/src-ui/package-lock.json +++ b/src-ui/package-lock.json @@ -1,21 +1,21 @@ { "name": "paperless-ui", "version": "0.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "paperless-ui", "version": "0.0.0", "dependencies": { - "@angular/common": "~15.1.0", - "@angular/compiler": "~15.1.0", - "@angular/core": "~15.1.0", - "@angular/forms": "~15.1.0", - "@angular/localize": "~15.1.0", - "@angular/platform-browser": "~15.1.0", - "@angular/platform-browser-dynamic": "~15.1.0", - "@angular/router": "~15.1.0", + "@angular/common": "~15.1.2", + "@angular/compiler": "~15.1.2", + "@angular/core": "~15.1.2", + "@angular/forms": "~15.1.2", + "@angular/localize": "~15.1.2", + "@angular/platform-browser": "~15.1.2", + "@angular/platform-browser-dynamic": "~15.1.2", + "@angular/router": "~15.1.2", "@ng-bootstrap/ng-bootstrap": "^14.0.1", "@ng-select/ng-select": "^10.0.1", "@ngneat/dirty-check-forms": "^3.0.3", @@ -34,14 +34,14 @@ }, "devDependencies": { "@angular-builders/jest": "15.0.0", - "@angular-devkit/build-angular": "~15.1.0", - "@angular-eslint/builder": "15.1.0", - "@angular-eslint/eslint-plugin": "15.1.0", - "@angular-eslint/eslint-plugin-template": "15.1.0", - "@angular-eslint/schematics": "15.1.0", - "@angular-eslint/template-parser": "15.1.0", - "@angular/cli": "~15.1.0", - "@angular/compiler-cli": "~15.1.0", + "@angular-devkit/build-angular": "~15.1.4", + "@angular-eslint/builder": "15.2.0", + "@angular-eslint/eslint-plugin": "15.2.0", + "@angular-eslint/eslint-plugin-template": "15.2.0", + "@angular-eslint/schematics": "15.2.0", + "@angular-eslint/template-parser": "15.2.0", + "@angular/cli": "~15.1.4", + "@angular/compiler-cli": "~15.1.2", "@types/jest": "28.1.6", "@types/node": "^18.7.23", "@typescript-eslint/eslint-plugin": "^5.43.0", @@ -95,13 +95,222 @@ "jest": ">=28" } }, + "node_modules/@angular-builders/jest/node_modules/@types/jsdom": { + "version": "16.2.15", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.15.tgz", + "integrity": "sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/parse5": "^6.0.3", + "@types/tough-cookie": "*" + } + }, + "node_modules/@angular-builders/jest/node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/@angular-builders/jest/node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@angular-builders/jest/node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@angular-builders/jest/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@angular-builders/jest/node_modules/jest-environment-jsdom": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz", + "integrity": "sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/jsdom": "^16.2.4", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3", + "jsdom": "^19.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@angular-builders/jest/node_modules/jest-preset-angular": { + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-12.2.3.tgz", + "integrity": "sha512-9vgawXuki/lg4IRPtl5k83krWLKADTal7BBm06xNAWOK09AbHK1foXqZdVOMObsWbaMDeQ1cjba60vS/aEVY4Q==", + "dev": true, + "dependencies": { + "bs-logger": "^0.2.6", + "esbuild-wasm": ">=0.13.8", + "jest-environment-jsdom": "^28.0.0", + "pretty-format": "^28.0.0", + "ts-jest": "^28.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "optionalDependencies": { + "esbuild": ">=0.13.8" + }, + "peerDependencies": { + "@angular-devkit/build-angular": ">=12.2.18 <16.0.0", + "@angular/compiler-cli": ">=12.2.16 <16.0.0", + "@angular/core": ">=12.2.16 <16.0.0", + "@angular/platform-browser-dynamic": ">=12.2.16 <16.0.0", + "jest": "^28.0.0", + "typescript": ">=4.4" + } + }, + "node_modules/@angular-builders/jest/node_modules/jsdom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.5.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.1", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/@angular-builders/jest/node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular-builders/jest/node_modules/tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@angular-builders/jest/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@angular-builders/jest/node_modules/w3c-xmlserializer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-builders/jest/node_modules/whatwg-url": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@angular-devkit/architect": { - "version": "0.1501.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1501.0.tgz", - "integrity": "sha512-nbe830CwHm/HSMB8eZ4aFbgfNhc1eRYPCBmMFyRONc8HlXRAy0qWhpkY/NmQUaKUPOT9vJUzVk+AUNbqSR3l/w==", + "version": "0.1501.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1501.4.tgz", + "integrity": "sha512-PE0CqPaNzcz8yHEuJwqtKxYvXX9hgWWvC6hI2DWKtC+5WgJLAYJNEGofXQRc227Nj+YySEYUUo8Ja8SYl3lDxA==", "devOptional": true, "dependencies": { - "@angular-devkit/core": "15.1.0", + "@angular-devkit/core": "15.1.4", "rxjs": "6.6.7" }, "engines": { @@ -129,15 +338,15 @@ "devOptional": true }, "node_modules/@angular-devkit/build-angular": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-15.1.0.tgz", - "integrity": "sha512-xTrsdwwFkSv58of99+1FSxu64Grulh0j/UH2JNOLrf34TCMYnAaRUfZcCJTqJuX2sZDsyoR2w+bAhtvYEj4A5A==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-15.1.4.tgz", + "integrity": "sha512-+vubHYyQn8HJ+uJQndr8xFlX6C7y1kdnzTiKgx6QFvA5sd/IhXXzsnDd1wFer1lCrZ+1qgfhG9HI/RL3cBeKrA==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1501.0", - "@angular-devkit/build-webpack": "0.1501.0", - "@angular-devkit/core": "15.1.0", + "@angular-devkit/architect": "0.1501.4", + "@angular-devkit/build-webpack": "0.1501.4", + "@angular-devkit/core": "15.1.4", "@babel/core": "7.20.12", "@babel/generator": "7.20.7", "@babel/helper-annotate-as-pure": "7.18.6", @@ -148,7 +357,7 @@ "@babel/runtime": "7.20.7", "@babel/template": "7.20.7", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "15.1.0", + "@ngtools/webpack": "15.1.4", "ansi-colors": "4.1.3", "autoprefixer": "10.4.13", "babel-loader": "9.1.2", @@ -159,7 +368,7 @@ "copy-webpack-plugin": "11.0.0", "critters": "0.0.16", "css-loader": "6.7.3", - "esbuild-wasm": "0.16.16", + "esbuild-wasm": "0.16.17", "glob": "8.0.3", "https-proxy-agent": "5.0.1", "inquirer": "8.2.4", @@ -200,7 +409,7 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.16.16" + "esbuild": "0.16.17" }, "peerDependencies": { "@angular/compiler-cli": "^15.0.0", @@ -255,13 +464,19 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1501.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1501.0.tgz", - "integrity": "sha512-Roy3g30XZ1+BaM2K9HRVgYyrwduTyBr9qGlqGdeLRfqmqu/4w2CO/PU5E1vEkeEvl/AuORWQ53Hedgnycc8gqg==", + "version": "0.1501.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1501.4.tgz", + "integrity": "sha512-rJ7KTBDW0UHgVJjQ23qJfGun+pDX3ZG2z0OtsskdsOI62SAvW1cVLuS50ICTcWW6gtcDO0R/6Q1RLbaV1JHZ5A==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1501.0", + "@angular-devkit/architect": "0.1501.4", "rxjs": "6.6.7" }, "engines": { @@ -293,9 +508,9 @@ "dev": true }, "node_modules/@angular-devkit/core": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-15.1.0.tgz", - "integrity": "sha512-4FkoYgfuttp0ZD8NaVRr9Ya7kgSMkrXjJ5JIFlR4F49kTJXUpNB5xZeTS5CPh+wuP3o4IXpzn4A6M9vluJ5TFw==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-15.1.4.tgz", + "integrity": "sha512-PW5MRmd9DHJR4FaXchwQtj9pXnsghSTnwRvfZeCRNYgU2sv0DKyTV+YTSJB+kNXnoPNG1Je6amDEkiXecpspXg==", "devOptional": true, "dependencies": { "ajv": "8.12.0", @@ -337,12 +552,12 @@ "devOptional": true }, "node_modules/@angular-devkit/schematics": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.1.0.tgz", - "integrity": "sha512-uCvxdhOZLRAjzUSPphVhAuAmUJ66FsQsyOD48gGr3Dpz0yNY570ill5CoBCMNbsP110p8E3O6OFXkbSxgDxEUA==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.1.4.tgz", + "integrity": "sha512-jpddxo9Qd2yRQ1t9FLhAx5S+luz6HkyhDytq0LFKbxf9ikf1J4oy9riPBFl4pRmrNARWcHZ6GbD20/Ky8PjmXQ==", "devOptional": true, "dependencies": { - "@angular-devkit/core": "15.1.0", + "@angular-devkit/core": "15.1.4", "jsonc-parser": "3.2.0", "magic-string": "0.27.0", "ora": "5.4.1", @@ -373,9 +588,9 @@ "devOptional": true }, "node_modules/@angular-eslint/builder": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-15.1.0.tgz", - "integrity": "sha512-MoPeJv4a1wSoFj8fVA01hFb+QQke2t74CSVuc6o4EqkWI0tYMM1Wg19fPtTZnj4spkGA82j2mf/tazKGRe/nrw==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-15.2.0.tgz", + "integrity": "sha512-5xnJub1G7+F9Ra75N90Ln9yn/KFzWnMIHfqDVRRDrlwgja1Zc9ZmqcazLWc/k12yzKyJoO3uwBSycyVwG2fYVg==", "dev": true, "peerDependencies": { "eslint": "^7.20.0 || ^8.0.0", @@ -383,19 +598,19 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-15.1.0.tgz", - "integrity": "sha512-zcOx+PnYuVDIG3wd/JVzCYdEUarKGtgIcN4iU9ZF+BVk5e8i9cbD3U8U3EDJKbrrokbFl9GBBJMCOa6XYTGJwQ==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-15.2.0.tgz", + "integrity": "sha512-a0bfXxYyGoWJHrVQ4QER0HdRgselcTtJeyqiFPAxID2ZxF0IBGKLNTtugUTXekEmiLev8yGLX9TqAtthN57fEg==", "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-15.1.0.tgz", - "integrity": "sha512-3RRDnxaCEI5DdKq3hipXvrxctPPssrUXnNbgczJRIJ3cssr4ndobCSNqUSepA6vWj5mWe7w+nnh4vgfhZ5keig==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-15.2.0.tgz", + "integrity": "sha512-yJGbmSUU0B0MFJ48ktpkqqEK+zv5k9iwlZSqEHtiQMKvDelfluovnEusihel7uPRo1c1iVlbSgXfGpxpUCfocA==", "dev": true, "dependencies": { - "@angular-eslint/utils": "15.1.0", - "@typescript-eslint/utils": "5.44.0" + "@angular-eslint/utils": "15.2.0", + "@typescript-eslint/utils": "5.48.1" }, "peerDependencies": { "eslint": "^7.20.0 || ^8.0.0", @@ -403,15 +618,15 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-15.1.0.tgz", - "integrity": "sha512-WofUNiLcO/oprnzswkF+u1PC6ulmqB/m7fNKMMnbExMYuK1P38gjp59FW7E+2Ivz+A4/8a5xV+U+cy3oRgh4NQ==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-15.2.0.tgz", + "integrity": "sha512-aL3czf5Jpv29rKN3UG20tQepX1+V0d6xc0g+1l0zPHZJYjVd6Oy0nIxWiGfl4yanaXiVpmxiV4vUcLlqqaFwbw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "15.1.0", - "@angular-eslint/utils": "15.1.0", - "@typescript-eslint/type-utils": "5.44.0", - "@typescript-eslint/utils": "5.44.0", + "@angular-eslint/bundled-angular-compiler": "15.2.0", + "@angular-eslint/utils": "15.2.0", + "@typescript-eslint/type-utils": "5.48.1", + "@typescript-eslint/utils": "5.48.1", "aria-query": "5.1.3", "axobject-query": "3.1.1" }, @@ -421,14 +636,14 @@ } }, "node_modules/@angular-eslint/schematics": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-15.1.0.tgz", - "integrity": "sha512-BJm7FFVCad8TV8Gtwq+FbgtLGvjJDlpt5Rne1hCd4nCr8vlQZxSWVwnTHRkAs+qd5dYn3p7bGcKZxEZzeVkWjA==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-15.2.0.tgz", + "integrity": "sha512-N9tuVu3vL47beppTsV9wAF+v6M9trbJnuNWYQGGsqA3mtCAkFUvJuHyWcXNPdSCNv/cJtR1OOJ7Y922uB5JPJQ==", "dev": true, "dependencies": { - "@angular-eslint/eslint-plugin": "15.1.0", - "@angular-eslint/eslint-plugin-template": "15.1.0", - "ignore": "5.2.0", + "@angular-eslint/eslint-plugin": "15.2.0", + "@angular-eslint/eslint-plugin-template": "15.2.0", + "ignore": "5.2.4", "strip-json-comments": "3.1.1", "tmp": "0.2.1" }, @@ -437,12 +652,12 @@ } }, "node_modules/@angular-eslint/template-parser": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-15.1.0.tgz", - "integrity": "sha512-ctcA7OAV1wwFByW1te3uZwzySuIRlo8NblG5yUtgU5BXt3nXwIDwoSr3tvI2dRHobNHcXVQcOFVzyOdXD/vsIg==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-15.2.0.tgz", + "integrity": "sha512-xnnxPfV/G0Ll3B0HGrF1ucsc/DHmNE6UhhmWxYPTERq0McbZGRiATa66hCoOZ/Rdylun4ogBfsRKAG8XxEvlvw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "15.1.0", + "@angular-eslint/bundled-angular-compiler": "15.2.0", "eslint-scope": "^7.0.0" }, "peerDependencies": { @@ -451,13 +666,13 @@ } }, "node_modules/@angular-eslint/utils": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-15.1.0.tgz", - "integrity": "sha512-Vt59o7wq3UOgHSCrOaHg0SgxgbAGhG0ofNQwd7sLqNP2/w/90dWY2jwWXIVSuZ+BmfVj3wgNi3KujbSWJP1cfg==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-15.2.0.tgz", + "integrity": "sha512-qfTOKQ+aef/YER679/xN1E+FkZKMd0I73P6txUZAb9k2G1ACVktG+wOUIBfgjIlUVq9Q01AV91LGOWcd+rdEEA==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "15.1.0", - "@typescript-eslint/utils": "5.44.0" + "@angular-eslint/bundled-angular-compiler": "15.2.0", + "@typescript-eslint/utils": "5.48.1" }, "peerDependencies": { "eslint": "^7.20.0 || ^8.0.0", @@ -465,15 +680,15 @@ } }, "node_modules/@angular/cli": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-15.1.0.tgz", - "integrity": "sha512-GjLmlFH46ErMXstfMwl3DSuhME0hX999NDHm+tBu7239OomgQMSmiLGmcv7FJMqoUnS4LBhzHGfE4lougDRxyw==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-15.1.4.tgz", + "integrity": "sha512-ebZiI4arb9wtOUMmTyUvjgDovmwpY8hmGLbkKZiEmAX8+2gbl4e97M+zd0SICZDU8bu5VcpoP6Q3Qb6vVjab9A==", "devOptional": true, "dependencies": { - "@angular-devkit/architect": "0.1501.0", - "@angular-devkit/core": "15.1.0", - "@angular-devkit/schematics": "15.1.0", - "@schematics/angular": "15.1.0", + "@angular-devkit/architect": "0.1501.4", + "@angular-devkit/core": "15.1.4", + "@angular-devkit/schematics": "15.1.4", + "@schematics/angular": "15.1.4", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "3.0.1", @@ -499,9 +714,9 @@ } }, "node_modules/@angular/common": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-15.1.0.tgz", - "integrity": "sha512-O0JKOeJ7dFcd/mnnfm4xQOYTAc+yL+OrRpGte7z84lKPU2fupLpGW/30tHUy1TXixsANyTLC3cTVXTY5szPdqg==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-15.1.2.tgz", + "integrity": "sha512-1Ra6EoaZjPcdDsGBge3qSajO1ECYceX+2EWHdjvJ9ZEIaXsLNFMQBUMgJnjsnrojs9Gd3bxJ0WHkahij5/8WNA==", "dependencies": { "tslib": "^2.3.0" }, @@ -509,14 +724,14 @@ "node": "^14.20.0 || ^16.13.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "15.1.0", + "@angular/core": "15.1.2", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-15.1.0.tgz", - "integrity": "sha512-+ky5Cvgps725Q/KdgsYzi/fe9LbT5ujhZoT9N5k+tYTJsepMUrpExFwMFkWrdMUYTK7DaxC9ufjZ4WZmHVhFoA==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-15.1.2.tgz", + "integrity": "sha512-hKlr1i61a2Gl0h53goSSUbZmzNgdC1zAHu+Ws0+1Qfv9cDgg1aVphFGFMdV0kbjLV+k7LyFjj5EgWU48o5UXww==", "dependencies": { "tslib": "^2.3.0" }, @@ -524,7 +739,7 @@ "node": "^14.20.0 || ^16.13.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "15.1.0" + "@angular/core": "15.1.2" }, "peerDependenciesMeta": { "@angular/core": { @@ -533,9 +748,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-15.1.0.tgz", - "integrity": "sha512-mKeXolM/plP9ebkHy3YGxHx0Yg63d09S0QCpdIcmvrbJpaPeM2D1SAkbDpO46T4BsfgfWHtSYByb5JcesrYrpQ==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-15.1.2.tgz", + "integrity": "sha512-gAqbQSKI4oeboh0UKsFdaEoST9IBVzqeckJzSTwAGxJeS33IM7Jjo3LViqHuzQyWKXe6srkci0LD4C2Mrj4kfQ==", "dependencies": { "@babel/core": "7.19.3", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -557,7 +772,7 @@ "node": "^14.20.0 || ^16.13.0 || >=18.10.0" }, "peerDependencies": { - "@angular/compiler": "15.1.0", + "@angular/compiler": "15.1.2", "typescript": ">=4.8.2 <5.0" } }, @@ -599,9 +814,9 @@ } }, "node_modules/@angular/core": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-15.1.0.tgz", - "integrity": "sha512-HiwctuR73MuLoLeP35j9xF8/SIg7ELx+iHZtp/TBfoH+LOmjWbdrAdVAPTbqnxvK0aJG+527dhgC6tBOXgBTcg==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-15.1.2.tgz", + "integrity": "sha512-K9pz6Bq6RuY/OWhKLZT1JQvk4orvU9wozgXY8cZaOGmNCQQ7sJv5zGkO5csO6o1ON1v/AHowrP/FAF1i8tml5g==", "dependencies": { "tslib": "^2.3.0" }, @@ -614,9 +829,9 @@ } }, "node_modules/@angular/forms": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-15.1.0.tgz", - "integrity": "sha512-MUAbruJng0iG/cHhCkDNrh31Y54upgBUjjkE4DnoHv138Wa7vba+GMYv2tTrs4rPWnB9vPziZgI0xIi/oSGxzg==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-15.1.2.tgz", + "integrity": "sha512-ZL3EkCQ2SDrv9hdyPX54WPiTf9SQpkKz4bn/Gxe6lySLy0oHR5Te68DPMljWBeHYa+cNTCDdPN81AKLIDjRQtA==", "dependencies": { "tslib": "^2.3.0" }, @@ -624,19 +839,19 @@ "node": "^14.20.0 || ^16.13.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "15.1.0", - "@angular/core": "15.1.0", - "@angular/platform-browser": "15.1.0", + "@angular/common": "15.1.2", + "@angular/core": "15.1.2", + "@angular/platform-browser": "15.1.2", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/localize": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-15.1.0.tgz", - "integrity": "sha512-BTEBMKqS4F8lK4rIsydRsxMbQ1hFnDZTZoifT33dmmOworWFJCGryYw0ZCTkeBtCnkRGgnr1aOTIHTvJPFIMiA==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-15.1.2.tgz", + "integrity": "sha512-wnNgq8tn5W1u2B/G2Q08XiHKucJidNE+U5OuYk+qjf2M5M5DVwBhF/mxJxWoDKSuLg/JIJ8FUiKjEhJ5iUJ4lg==", "dependencies": { "@babel/core": "7.19.3", - "glob": "8.0.3", + "glob": "8.1.0", "yargs": "^17.2.1" }, "bin": { @@ -648,8 +863,8 @@ "node": "^14.20.0 || ^16.13.0 || >=18.10.0" }, "peerDependencies": { - "@angular/compiler": "15.1.0", - "@angular/compiler-cli": "15.1.0" + "@angular/compiler": "15.1.2", + "@angular/compiler-cli": "15.1.2" } }, "node_modules/@angular/localize/node_modules/@babel/core": { @@ -681,6 +896,43 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@angular/localize/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@angular/localize/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@angular/localize/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@angular/localize/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -690,9 +942,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-15.1.0.tgz", - "integrity": "sha512-yuJweAR+rJhWWHM4Im3Iy6S4+W3OtcVHijcqrxfVxiA9ZHbDw/jpYDi06ZZIgfnNyGWi5/BzJbHvxH3b0lAo5Q==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-15.1.2.tgz", + "integrity": "sha512-eWyfUOFZ05vB0UfPUTPK7pPJZjFtbGZlJOea3IUqEohuyRqq3CqYCrv7SVXGKQVOx1qRA0Ckr9FOB8/qYbTq1A==", "dependencies": { "tslib": "^2.3.0" }, @@ -700,9 +952,9 @@ "node": "^14.20.0 || ^16.13.0 || >=18.10.0" }, "peerDependencies": { - "@angular/animations": "15.1.0", - "@angular/common": "15.1.0", - "@angular/core": "15.1.0" + "@angular/animations": "15.1.2", + "@angular/common": "15.1.2", + "@angular/core": "15.1.2" }, "peerDependenciesMeta": { "@angular/animations": { @@ -711,9 +963,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-15.1.0.tgz", - "integrity": "sha512-ukyycXkuu4Ah/35cbN4pEB91D2PK5eZVbJ+liCD6uRb4UI3X+QVg6Qz6MoIctVAlTV6tWK20T81zoux9SzWKsg==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-15.1.2.tgz", + "integrity": "sha512-JBSRYeaW+Vb/lKXwxgrU8m42Avxjwmx8vGRp/krJfhh4KL9CJ84zf7Ldxb0sCv06kGdu6vbOUasNGDdgIQfdOQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -721,16 +973,16 @@ "node": "^14.20.0 || ^16.13.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "15.1.0", - "@angular/compiler": "15.1.0", - "@angular/core": "15.1.0", - "@angular/platform-browser": "15.1.0" + "@angular/common": "15.1.2", + "@angular/compiler": "15.1.2", + "@angular/core": "15.1.2", + "@angular/platform-browser": "15.1.2" } }, "node_modules/@angular/router": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-15.1.0.tgz", - "integrity": "sha512-78ItVVXOYdu/RRxruHwSmtNxEP2clx+afHKrkwc4e7/6uxVr4rl0VQhO6qHYme/bBtbLIcBZGJoSyoUg/xUSvQ==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-15.1.2.tgz", + "integrity": "sha512-p2tTHYvBsMaayJNWAZMBqrL7jwxs6NQaEDImBtMwnOnQr/M+LwQdAeNFfpky20ODZw0JwTW84q04l8klExq0kw==", "dependencies": { "tslib": "^2.3.0" }, @@ -738,9 +990,9 @@ "node": "^14.20.0 || ^16.13.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "15.1.0", - "@angular/core": "15.1.0", - "@angular/platform-browser": "15.1.0", + "@angular/common": "15.1.2", + "@angular/core": "15.1.2", + "@angular/platform-browser": "15.1.2", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -762,9 +1014,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", - "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", "engines": { "node": ">=6.9.0" } @@ -1161,12 +1413,12 @@ } }, "node_modules/@babel/helpers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", - "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", "dependencies": { "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", + "@babel/traverse": "^7.20.13", "@babel/types": "^7.20.7" }, "engines": { @@ -1187,9 +1439,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", - "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1757,9 +2009,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", - "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.14.tgz", + "integrity": "sha512-sMPepQtsOs5fM1bwNvuJJHvaCfOEQfmc01FGw0ELlTpTJj5Ql/zuNRRldYhAPys4ghXdBIQJbRVYi44/7QflQQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -2385,9 +2637,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", - "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.20.7", @@ -2395,7 +2647,7 @@ "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.7", + "@babel/parser": "^7.20.13", "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" @@ -2501,130 +2753,17 @@ } }, "node_modules/@cypress/schematic": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@cypress/schematic/-/schematic-2.4.0.tgz", - "integrity": "sha512-aor8hQ+gMXqx/ASdo7CUGo/sMEWwwfSRsLr99rM2GjvW+pZnCKKTnRG4UPf8Ro9SevLJj7KRZAZWxa5MAkJzZA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@cypress/schematic/-/schematic-2.5.0.tgz", + "integrity": "sha512-Yt/fQxYIHl9lU8LSoJL92nIwTVyYG5uP4VqW4taTn3viVWvssjK7sRtTI/LRxOoeMYX2RRlXQyUbFEikByn0cQ==", "optional": true, "dependencies": { - "@angular-devkit/architect": "^0.1402.1", - "@angular-devkit/core": "^14.2.1", - "@angular-devkit/schematics": "^14.2.1", - "@schematics/angular": "^14.2.1", "jsonc-parser": "^3.0.0", "rxjs": "~6.6.0" }, "peerDependencies": { - "@angular/cli": ">=12", - "@angular/core": ">=12" - } - }, - "node_modules/@cypress/schematic/node_modules/@angular-devkit/architect": { - "version": "0.1402.10", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", - "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", - "optional": true, - "dependencies": { - "@angular-devkit/core": "14.2.10", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@cypress/schematic/node_modules/@angular-devkit/core": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", - "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", - "optional": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@cypress/schematic/node_modules/@angular-devkit/schematics": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.10.tgz", - "integrity": "sha512-MMp31KpJTwKHisXOq+6VOXYApq97hZxFaFmZk396X5aIFTCELUwjcezQDk+u2nEs5iK/COUfnN3plGcfJxYhQA==", - "optional": true, - "dependencies": { - "@angular-devkit/core": "14.2.10", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@cypress/schematic/node_modules/@schematics/angular": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.10.tgz", - "integrity": "sha512-YFTc/9QJdx422XcApizEcVLKoyknu8b9zHIlAepZCu7WkV8GPT0hvVEHQ7KBWys5aQ7pPZMT0JpZLeAz0F2xYQ==", - "optional": true, - "dependencies": { - "@angular-devkit/core": "14.2.10", - "@angular-devkit/schematics": "14.2.10", - "jsonc-parser": "3.1.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@cypress/schematic/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "optional": 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/@cypress/schematic/node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "optional": true - }, - "node_modules/@cypress/schematic/node_modules/magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", - "optional": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" + "@angular/cli": ">=14", + "@angular/core": ">=14" } }, "node_modules/@cypress/schematic/node_modules/rxjs": { @@ -2674,9 +2813,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.16.tgz", - "integrity": "sha512-BUuWMlt4WSXod1HSl7aGK8fJOsi+Tab/M0IDK1V1/GstzoOpqc/v3DqmN8MkuapPKQ9Br1WtLAN4uEgWR8x64A==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", "cpu": [ "arm" ], @@ -2690,9 +2829,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.16.tgz", - "integrity": "sha512-hFHVAzUKp9Tf8psGq+bDVv+6hTy1bAOoV/jJMUWwhUnIHsh6WbFMhw0ZTkqDuh7TdpffFoHOiIOIxmHc7oYRBQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", "cpu": [ "arm64" ], @@ -2706,9 +2845,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.16.tgz", - "integrity": "sha512-9WhxJpeb6XumlfivldxqmkJepEcELekmSw3NkGrs+Edq6sS5KRxtUBQuKYDD7KqP59dDkxVbaoPIQFKWQG0KLg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", "cpu": [ "x64" ], @@ -2722,9 +2861,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.16.tgz", - "integrity": "sha512-8Z+wld+vr/prHPi2O0X7o1zQOfMbXWGAw9hT0jEyU/l/Yrg+0Z3FO9pjPho72dVkZs4ewZk0bDOFLdZHm8jEfw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", "cpu": [ "arm64" ], @@ -2738,9 +2877,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.16.tgz", - "integrity": "sha512-CYkxVvkZzGCqFrt7EgjFxQKhlUPyDkuR9P0Y5wEcmJqVI8ncerOIY5Kej52MhZyzOBXkYrJgZeVZC9xXXoEg9A==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", "cpu": [ "x64" ], @@ -2754,9 +2893,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.16.tgz", - "integrity": "sha512-fxrw4BYqQ39z/3Ja9xj/a1gMsVq0xEjhSyI4a9MjfvDDD8fUV8IYliac96i7tzZc3+VytyXX+XNsnpEk5sw5Wg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", "cpu": [ "arm64" ], @@ -2770,9 +2909,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.16.tgz", - "integrity": "sha512-8p3v1D+du2jiDvSoNVimHhj7leSfST9YlKsAEO7etBfuqjaBMndo0fmjNLp0JCMld+XIx9L80tooOkyUv1a1PQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", "cpu": [ "x64" ], @@ -2786,9 +2925,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.16.tgz", - "integrity": "sha512-bYaocE1/PTMRmkgSckZ0D0Xn2nox8v2qlk+MVVqm+VECNKDdZvghVZtH41dNtBbwADSvA6qkCHGYeWm9LrNCBw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", "cpu": [ "arm" ], @@ -2802,9 +2941,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.16.tgz", - "integrity": "sha512-N3u6BBbCVY3xeP2D8Db7QY8I+nZ+2AgOopUIqk+5yCoLnsWkcVxD2ay5E9iIdvApFi1Vg1lZiiwaVp8bOpAc4A==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", "cpu": [ "arm64" ], @@ -2818,9 +2957,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.16.tgz", - "integrity": "sha512-dxjqLKUW8GqGemoRT9v8IgHk+T4tRm1rn1gUcArsp26W9EkK/27VSjBVUXhEG5NInHZ92JaQ3SSMdTwv/r9a2A==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", "cpu": [ "ia32" ], @@ -2834,9 +2973,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.16.tgz", - "integrity": "sha512-MdUFggHjRiCCwNE9+1AibewoNq6wf94GLB9Q9aXwl+a75UlRmbRK3h6WJyrSGA6ZstDJgaD2wiTSP7tQNUYxwA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", "cpu": [ "loong64" ], @@ -2850,9 +2989,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.16.tgz", - "integrity": "sha512-CO3YmO7jYMlGqGoeFeKzdwx/bx8Vtq/SZaMAi+ZLDUnDUdfC7GmGwXzIwDJ70Sg+P9pAemjJyJ1icKJ9R3q/Fg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", "cpu": [ "mips64el" ], @@ -2866,9 +3005,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.16.tgz", - "integrity": "sha512-DSl5Czh5hCy/7azX0Wl9IdzPHX2H8clC6G87tBnZnzUpNgRxPFhfmArbaHoAysu4JfqCqbB/33u/GL9dUgCBAw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", "cpu": [ "ppc64" ], @@ -2882,9 +3021,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.16.tgz", - "integrity": "sha512-sSVVMEXsqf1fQu0j7kkhXMViroixU5XoaJXl1u/u+jbXvvhhCt9YvA/B6VM3aM/77HuRQ94neS5bcisijGnKFQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", "cpu": [ "riscv64" ], @@ -2898,9 +3037,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.16.tgz", - "integrity": "sha512-jRqBCre9gZGoCdCN/UWCCMwCMsOg65IpY9Pyj56mKCF5zXy9d60kkNRdDN6YXGjr3rzcC4DXnS/kQVCGcC4yPQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", "cpu": [ "s390x" ], @@ -2914,9 +3053,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.16.tgz", - "integrity": "sha512-G1+09TopOzo59/55lk5Q0UokghYLyHTKKzD5lXsAOOlGDbieGEFJpJBr3BLDbf7cz89KX04sBeExAR/pL/26sA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", "cpu": [ "x64" ], @@ -2930,9 +3069,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.16.tgz", - "integrity": "sha512-xwjGJB5wwDEujLaJIrSMRqWkbigALpBNcsF9SqszoNKc+wY4kPTdKrSxiY5ik3IatojePP+WV108MvF6q6np4w==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", "cpu": [ "x64" ], @@ -2946,9 +3085,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.16.tgz", - "integrity": "sha512-yeERkoxG2nR2oxO5n+Ms7MsCeNk23zrby2GXCqnfCpPp7KNc0vxaaacIxb21wPMfXXRhGBrNP4YLIupUBrWdlg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", "cpu": [ "x64" ], @@ -2962,9 +3101,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.16.tgz", - "integrity": "sha512-nHfbEym0IObXPhtX6Va3H5GaKBty2kdhlAhKmyCj9u255ktAj0b1YACUs9j5H88NRn9cJCthD1Ik/k9wn8YKVg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", "cpu": [ "x64" ], @@ -2978,9 +3117,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.16.tgz", - "integrity": "sha512-pdD+M1ZOFy4hE15ZyPX09fd5g4DqbbL1wXGY90YmleVS6Y5YlraW4BvHjim/X/4yuCpTsAFvsT4Nca2lbyDH/A==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", "cpu": [ "arm64" ], @@ -2994,9 +3133,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.16.tgz", - "integrity": "sha512-IPEMfU9p0c3Vb8PqxaPX6BM9rYwlTZGYOf9u+kMdhoILZkVKEjq6PKZO0lB+isojWwAnAqh4ZxshD96njTXajg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", "cpu": [ "ia32" ], @@ -3010,9 +3149,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.16.tgz", - "integrity": "sha512-1YYpoJ39WV/2bnShPwgdzJklc+XS0bysN6Tpnt1cWPdeoKOG4RMEY1g7i534QxXX/rPvNx/NLJQTTCeORYzipg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", "cpu": [ "x64" ], @@ -3071,9 +3210,9 @@ "dev": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "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" @@ -3964,9 +4103,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-15.1.0.tgz", - "integrity": "sha512-7CyQk5eADg0fsi+EDa3DWIyR+CjymcyToWU0uBpuyrZCl5gUnzgeWZIQiQ0HyaMxWPfQ5cwwZ1YeAwkxMpKL2w==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-15.1.4.tgz", + "integrity": "sha512-IvKXK8AvPlLkP99Uf0RL1EHlcsXNQd86II9HsLjupUtmFC/pPuDWrRFMP9bjWUMh2ZeYpgUeEAbcCH3doSrdIA==", "dev": true, "engines": { "node": "^14.20.0 || ^16.13.0 || >=18.10.0", @@ -4177,13 +4316,13 @@ } }, "node_modules/@schematics/angular": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-15.1.0.tgz", - "integrity": "sha512-TOtmPcMOZTLteoJsXYZ5qRUaOKlZkq62TVV8nt9+I+e2SZ/G9zVr1KXWweCPwFje0y4W1KrHUw6e4sMNkD1f4A==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-15.1.4.tgz", + "integrity": "sha512-4SV8dDGZeSvts01b8y2W6FmpDD0dQhBlGMhMJKC/tUnhfNKfYCs2VKtMBsIc3ZiGP2yoA3+nUiMmtS6hEkXYHw==", "devOptional": true, "dependencies": { - "@angular-devkit/core": "15.1.0", - "@angular-devkit/schematics": "15.1.0", + "@angular-devkit/core": "15.1.4", + "@angular-devkit/schematics": "15.1.4", "jsonc-parser": "3.2.0" }, "engines": { @@ -4271,13 +4410,13 @@ "dev": true }, "node_modules/@types/babel__core": { - "version": "7.1.20", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", - "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" @@ -4376,9 +4515,9 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", - "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", + "version": "4.17.16", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.16.tgz", + "integrity": "sha512-LkKpqRZ7zqXJuvoELakaFYuETHjZkSol8EV6cNnyishutDBCCdv6+dsKPbKkCcIk57qRphOLY5sEgClw1bO3gA==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -4388,9 +4527,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.32", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", - "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", + "version": "4.17.33", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", + "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", "dev": true, "dependencies": { "@types/node": "*", @@ -4607,9 +4746,9 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.19", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.19.tgz", - "integrity": "sha512-cAx3qamwaYX9R0fzOIZAlFpo4A+1uBVCxqpKz9D26uTF4srRXaGTTsikQmaotCtNdbhzyUH7ft6p9ktz9s6UNQ==", + "version": "17.0.22", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", + "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -4631,15 +4770,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.1.tgz", - "integrity": "sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.50.0.tgz", + "integrity": "sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.48.1", - "@typescript-eslint/type-utils": "5.48.1", - "@typescript-eslint/utils": "5.48.1", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/type-utils": "5.50.0", + "@typescript-eslint/utils": "5.50.0", "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", @@ -4664,13 +4804,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz", - "integrity": "sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.50.0.tgz", + "integrity": "sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.48.1", - "@typescript-eslint/utils": "5.48.1", + "@typescript-eslint/typescript-estree": "5.50.0", + "@typescript-eslint/utils": "5.50.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -4691,16 +4831,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.1.tgz", - "integrity": "sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz", + "integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.48.1", - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/typescript-estree": "5.48.1", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/typescript-estree": "5.50.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -4765,7 +4905,7 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/scope-manager": { "version": "5.50.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", @@ -4782,88 +4922,14 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", - "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", - "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", - "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.50.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.1.tgz", - "integrity": "sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/visitor-keys": "5.48.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", - "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz", + "integrity": "sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.44.0", - "@typescript-eslint/utils": "5.44.0", + "@typescript-eslint/typescript-estree": "5.48.1", + "@typescript-eslint/utils": "5.48.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -4884,63 +4950,6 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", - "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", - "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", - "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.44.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/types": { "version": "5.48.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.1.tgz", "integrity": "sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==", @@ -4953,7 +4962,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { "version": "5.48.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz", "integrity": "sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==", @@ -4980,17 +4989,74 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.1.tgz", + "integrity": "sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.48.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", + "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", + "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@typescript-eslint/utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", - "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.1.tgz", + "integrity": "sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/scope-manager": "5.48.1", + "@typescript-eslint/types": "5.48.1", + "@typescript-eslint/typescript-estree": "5.48.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -5007,13 +5073,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", - "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.1.tgz", + "integrity": "sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0" + "@typescript-eslint/types": "5.48.1", + "@typescript-eslint/visitor-keys": "5.48.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5024,9 +5090,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", - "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.1.tgz", + "integrity": "sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5037,13 +5103,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", - "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz", + "integrity": "sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0", + "@typescript-eslint/types": "5.48.1", + "@typescript-eslint/visitor-keys": "5.48.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5064,12 +5130,12 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", - "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.1.tgz", + "integrity": "sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/types": "5.48.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -5103,12 +5169,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.1.tgz", - "integrity": "sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", + "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.48.1", + "@typescript-eslint/types": "5.50.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -5309,9 +5375,9 @@ } }, "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "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" @@ -6359,9 +6425,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001443", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001443.tgz", - "integrity": "sha512-jUo8svymO8+Mkj3qbUbVjR8zv8LUGpGkUM/jKvc9SO2BvjCI980dp9fQbf/dyLs6RascPzgR4nhAKFA4OHeSaA==", + "version": "1.0.30001450", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001450.tgz", + "integrity": "sha512-qMBmvmQmFXaSxexkjjfMvD5rnDL0+m+dUMZKoDYsGG8iZN29RuYh9eRoMvKsT6uMAWlyUUGDEQGJJYjzCIO9ew==", "funding": [ { "type": "opencollective", @@ -6867,9 +6933,9 @@ } }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "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" @@ -6975,9 +7041,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", - "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.2.tgz", + "integrity": "sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg==", "dev": true, "dependencies": { "browserslist": "^4.21.4" @@ -7459,9 +7525,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", "dev": true, "engines": { "node": ">=0.10.0" @@ -7907,19 +7973,20 @@ } }, "node_modules/es-get-iterator": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", - "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.0", - "has-symbols": "^1.0.1", - "is-arguments": "^1.1.0", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", "is-map": "^2.0.2", "is-set": "^2.0.2", - "is-string": "^1.0.5", - "isarray": "^2.0.5" + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7932,9 +7999,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.16.tgz", - "integrity": "sha512-24JyKq10KXM5EBIgPotYIJ2fInNWVVqflv3gicIyQqfmUqi4HvDW1VR790cBgLJHCl96Syy7lhoz7tLFcmuRmg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", "dev": true, "hasInstallScript": true, "optional": true, @@ -7945,34 +8012,34 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.16.16", - "@esbuild/android-arm64": "0.16.16", - "@esbuild/android-x64": "0.16.16", - "@esbuild/darwin-arm64": "0.16.16", - "@esbuild/darwin-x64": "0.16.16", - "@esbuild/freebsd-arm64": "0.16.16", - "@esbuild/freebsd-x64": "0.16.16", - "@esbuild/linux-arm": "0.16.16", - "@esbuild/linux-arm64": "0.16.16", - "@esbuild/linux-ia32": "0.16.16", - "@esbuild/linux-loong64": "0.16.16", - "@esbuild/linux-mips64el": "0.16.16", - "@esbuild/linux-ppc64": "0.16.16", - "@esbuild/linux-riscv64": "0.16.16", - "@esbuild/linux-s390x": "0.16.16", - "@esbuild/linux-x64": "0.16.16", - "@esbuild/netbsd-x64": "0.16.16", - "@esbuild/openbsd-x64": "0.16.16", - "@esbuild/sunos-x64": "0.16.16", - "@esbuild/win32-arm64": "0.16.16", - "@esbuild/win32-ia32": "0.16.16", - "@esbuild/win32-x64": "0.16.16" + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" } }, "node_modules/esbuild-wasm": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.16.16.tgz", - "integrity": "sha512-X7wDIw8Pg0WFfDyrUhMpoMaGuCPeAfsQL8zJq5OeYQoNNXIvx8C+E1gz31bLcEOEhx0MBvupAM6ZI2D0sR8Fsw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.16.17.tgz", + "integrity": "sha512-Tn7NuMqRcM+T/qCOxbQRq0qrwWl1sUWp6ARfJRakE8Bepew6zata4qrKgH2YqovNC5e/2fcTa7o+VL/FAOZC1Q==", "dev": true, "bin": { "esbuild": "bin/esbuild" @@ -8087,9 +8154,9 @@ } }, "node_modules/eslint": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", - "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", + "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.4.1", @@ -8303,9 +8370,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "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" @@ -9011,9 +9078,9 @@ } }, "node_modules/fs-minipass": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.0.tgz", - "integrity": "sha512-EUojgQaSPy6sxcqcZgQv6TVF6jiKvurji3AxhAivs/Ep4O1UpS8TusaxpybfFHZ2skRhLqzk6WR8nqNYIMMDeA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.1.tgz", + "integrity": "sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==", "devOptional": true, "dependencies": { "minipass": "^4.0.0" @@ -9097,9 +9164,9 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "devOptional": true, "dependencies": { "function-bind": "^1.1.1", @@ -9156,6 +9223,7 @@ "version": "8.0.3", "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "devOptional": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9191,14 +9259,16 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "devOptional": true, "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/glob/node_modules/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "devOptional": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -9473,9 +9543,9 @@ "dev": true }, "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "devOptional": true }, "node_modules/http-deceiver": { @@ -9657,9 +9727,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" @@ -9687,9 +9757,9 @@ } }, "node_modules/ignore-walk/node_modules/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "devOptional": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -9904,6 +9974,20 @@ "node": ">=8" } }, + "node_modules/internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", @@ -11092,18 +11176,18 @@ } }, "node_modules/jest-environment-jsdom": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.3.1.tgz", - "integrity": "sha512-G46nKgiez2Gy4zvYNhayfMEAFlVHhWfncqvqS6yCd0i+a4NsSUD2WtrKSaYQrYiLQaupHXxCRi8xxVL2M9PbhA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.4.1.tgz", + "integrity": "sha512-+KfYmRTl5CBHQst9hIz77TiiriHYvuWoLjMT855gx2AMxhHxpk1vtKvag1DQfyWCPVTWV/AG7SIqVh5WI1O/uw==", "dev": true, "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.4.1", + "@jest/fake-timers": "^29.4.1", + "@jest/types": "^29.4.1", "@types/jsdom": "^20.0.0", "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1", + "jest-mock": "^29.4.1", + "jest-util": "^29.4.1", "jsdom": "^20.0.0" }, "engines": { @@ -11119,56 +11203,56 @@ } }, "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.3.1.tgz", - "integrity": "sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.4.1.tgz", + "integrity": "sha512-pJ14dHGSQke7Q3mkL/UZR9ZtTOxqskZaC91NzamEH4dlKRt42W+maRBXiw/LWkdJe+P0f/zDR37+SPMplMRlPg==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/fake-timers": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", - "jest-mock": "^29.3.1" + "jest-mock": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.1.tgz", - "integrity": "sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.1.tgz", + "integrity": "sha512-/1joI6rfHFmmm39JxNfmNAO3Nwm6Y0VoL5fJDy7H1AtWrD1CgRtqJbN9Ld6rhAkGO76qqp4cwhhxJ9o9kYjQMw==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", - "@sinonjs/fake-timers": "^9.1.2", + "@jest/types": "^29.4.1", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-message-util": "^29.4.1", + "jest-mock": "^29.4.1", + "jest-util": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-jsdom/node_modules/@jest/schemas": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", - "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.0.tgz", + "integrity": "sha512-0E01f/gOZeNTG76i5eWWSupvSHaIINrTie7vCyjiYFKgzNdyEGd12BUv4oNBFHOqlHDbtoJi3HrQ38KCC90NsQ==", "dev": true, "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.25.16" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", - "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.1.tgz", + "integrity": "sha512-zbrAXDUOnpJ+FMST2rV7QZOgec8rskg2zv8g2ajeqitp4tvZiyqTCYXANrKsM+ryj5o+LI+ZN2EgU9drrkiwSA==", "dev": true, "dependencies": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.4.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -11179,6 +11263,30 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-environment-jsdom/node_modules/@sinclair/typebox": { + "version": "0.25.21", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", + "integrity": "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==", + "dev": true + }, + "node_modules/jest-environment-jsdom/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@sinonjs/fake-timers": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0" + } + }, "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -11238,18 +11346,18 @@ } }, "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz", - "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.1.tgz", + "integrity": "sha512-H4/I0cXUaLeCw6FM+i4AwCnOwHRgitdaUFOdm49022YD5nfyr8C/DrbXOBEyJaj+w/y0gGJ57klssOaUiLLQGQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -11258,26 +11366,26 @@ } }, "node_modules/jest-environment-jsdom/node_modules/jest-mock": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.1.tgz", - "integrity": "sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.1.tgz", + "integrity": "sha512-MwA4hQ7zBOcgVCVnsM8TzaFLVUD/pFWTfbkY953Y81L5ret3GFRZtmPmRFAjKQSdCKoJvvqOu6Bvfpqlwwb0dQ==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/node": "*", - "jest-util": "^29.3.1" + "jest-util": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", - "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.1.tgz", + "integrity": "sha512-bQy9FPGxVutgpN4VRc0hk6w7Hx/m6L53QxpDreTZgJd9gfx/AV2MjyPde9tGyZRINAUrSv57p2inGBu2dRLmkQ==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -11289,12 +11397,12 @@ } }, "node_modules/jest-environment-jsdom/node_modules/pretty-format": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz", - "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.1.tgz", + "integrity": "sha512-dt/Z761JUVsrIKaY215o1xQJBGlSmTx/h4cSqXqjHLnU1+Kt+mavVE7UgqJJO5ukx5HjSswHfmXz4LjS2oIJfg==", "dev": true, "dependencies": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.4.0", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -11596,9 +11704,9 @@ } }, "node_modules/jest-preset-angular": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-12.2.3.tgz", - "integrity": "sha512-9vgawXuki/lg4IRPtl5k83krWLKADTal7BBm06xNAWOK09AbHK1foXqZdVOMObsWbaMDeQ1cjba60vS/aEVY4Q==", + "version": "12.2.6", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-12.2.6.tgz", + "integrity": "sha512-h5xazwr6Q4ZgQ/Bpcko2bJ6EnvSn3ek4cujhjK4+EPoB/27g0UzEiyNdlqTFa4m4uNjrqWRTSX+rHmWyPMg5PQ==", "dev": true, "dependencies": { "bs-logger": "^0.2.6", @@ -11619,7 +11727,7 @@ "@angular/core": ">=12.2.16 <16.0.0", "@angular/platform-browser-dynamic": ">=12.2.16 <16.0.0", "jest": "^28.0.0", - "typescript": ">=4.4" + "typescript": ">=4.2" } }, "node_modules/jest-preset-angular/node_modules/@types/jsdom": { @@ -12635,9 +12743,9 @@ } }, "node_modules/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", "dev": true, "funding": { "type": "opencollective", @@ -12897,9 +13005,9 @@ } }, "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "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" @@ -13670,13 +13778,10 @@ } }, "node_modules/minipass": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", - "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.1.tgz", + "integrity": "sha512-V9esFpNbK0arbN3fm2sxDKqMYgIp7XtVdE4Esj+PE4Qaaxdg1wIw48ITQIOn1sc8xXSmUviVL3cyjMqPlrVkiA==", "devOptional": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { "node": ">=8" } @@ -13864,12 +13969,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "devOptional": true }, - "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==", - "devOptional": true - }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -14072,9 +14171,9 @@ } }, "node_modules/ngx-ui-tour-core": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/ngx-ui-tour-core/-/ngx-ui-tour-core-10.0.0.tgz", - "integrity": "sha512-F7Pa8JtRjqFCPuPcOpSVBJwNNHmgCTNzfH2wAvPigvNEVM8WtAcaOmtYRN4QBP6WZK0JnCxuGXk7RJLmIY0rXA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ngx-ui-tour-core/-/ngx-ui-tour-core-10.1.0.tgz", + "integrity": "sha512-fuVdvSj0N9nRTP88ZiAW6kK40hKOFgzTxmCB0dVCbXU9KZQZhaorY4GOvw0LRlePXDpp60Sl9+lCeY5jTz9m7Q==", "dependencies": { "tslib": "^2.0.0" }, @@ -14087,11 +14186,11 @@ } }, "node_modules/ngx-ui-tour-ng-bootstrap": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/ngx-ui-tour-ng-bootstrap/-/ngx-ui-tour-ng-bootstrap-12.0.0.tgz", - "integrity": "sha512-HFBGXRHNW5yBq5lPtXXRSkTHmAEZLnj8fmc/BZoMF4MrfIle5CmkVfLnZ+XYPatB2oJsOKcbBMnzbZlJtoymtA==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/ngx-ui-tour-ng-bootstrap/-/ngx-ui-tour-ng-bootstrap-12.1.0.tgz", + "integrity": "sha512-Ut45ExzyERDJKiWRDNXYTSVjnybtLMAjg7YA/SHuSbMAbEMHpz44nsbYTNKdi2tXW6uxCtMdeq3MMBZ3ONc7UQ==", "dependencies": { - "ngx-ui-tour-core": "10.0.0", + "ngx-ui-tour-core": "10.1.0", "tslib": "^2.0.0" }, "peerDependencies": { @@ -14195,9 +14294,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==" + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz", + "integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA==" }, "node_modules/nopt": { "version": "6.0.0", @@ -14438,9 +14537,9 @@ "dev": true }, "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "devOptional": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15296,9 +15395,9 @@ } }, "node_modules/punycode": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz", - "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "devOptional": true, "engines": { "node": ">=6" @@ -16034,9 +16133,9 @@ "dev": true }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "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" @@ -16172,9 +16271,9 @@ } }, "node_modules/shell-quote": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", - "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16390,13 +16489,6 @@ "node": ">=0.10.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "optional": true - }, "node_modules/spawn-command": { "version": "0.0.2-1", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", @@ -16538,6 +16630,18 @@ "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -17151,9 +17255,9 @@ } }, "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -18186,13351 +18290,5 @@ "tslib": "^2.3.0" } } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@angular-builders/jest": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@angular-builders/jest/-/jest-15.0.0.tgz", - "integrity": "sha512-rJpO4QAsAXBXvkTI8E5kHxhLJEh6JR8iBYH3tHuXeTkABgifH+IRdDNWjogHTy32ratnhUPEaMOpPPDryIL+tw==", - "dev": true, - "requires": { - "@angular-devkit/architect": ">=0.1500.0 < 0.1600.0", - "@angular-devkit/core": "^15.0.0", - "jest-preset-angular": "12.2.3", - "lodash": "^4.17.15", - "tsconfig-paths": "^4.1.0" - } - }, - "@angular-devkit/architect": { - "version": "0.1501.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1501.0.tgz", - "integrity": "sha512-nbe830CwHm/HSMB8eZ4aFbgfNhc1eRYPCBmMFyRONc8HlXRAy0qWhpkY/NmQUaKUPOT9vJUzVk+AUNbqSR3l/w==", - "devOptional": true, - "requires": { - "@angular-devkit/core": "15.1.0", - "rxjs": "6.6.7" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "devOptional": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "devOptional": true - } - } - }, - "@angular-devkit/build-angular": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-15.1.0.tgz", - "integrity": "sha512-xTrsdwwFkSv58of99+1FSxu64Grulh0j/UH2JNOLrf34TCMYnAaRUfZcCJTqJuX2sZDsyoR2w+bAhtvYEj4A5A==", - "dev": true, - "requires": { - "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1501.0", - "@angular-devkit/build-webpack": "0.1501.0", - "@angular-devkit/core": "15.1.0", - "@babel/core": "7.20.12", - "@babel/generator": "7.20.7", - "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.20.7", - "@babel/plugin-transform-async-to-generator": "7.20.7", - "@babel/plugin-transform-runtime": "7.19.6", - "@babel/preset-env": "7.20.2", - "@babel/runtime": "7.20.7", - "@babel/template": "7.20.7", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "15.1.0", - "ansi-colors": "4.1.3", - "autoprefixer": "10.4.13", - "babel-loader": "9.1.2", - "babel-plugin-istanbul": "6.1.1", - "browserslist": "4.21.4", - "cacache": "17.0.4", - "chokidar": "3.5.3", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.16", - "css-loader": "6.7.3", - "esbuild": "0.16.16", - "esbuild-wasm": "0.16.16", - "glob": "8.0.3", - "https-proxy-agent": "5.0.1", - "inquirer": "8.2.4", - "jsonc-parser": "3.2.0", - "karma-source-map-support": "1.4.0", - "less": "4.1.3", - "less-loader": "11.1.0", - "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.1", - "magic-string": "0.27.0", - "mini-css-extract-plugin": "2.7.2", - "open": "8.4.0", - "ora": "5.4.1", - "parse5-html-rewriting-stream": "6.0.1", - "piscina": "3.2.0", - "postcss": "8.4.21", - "postcss-loader": "7.0.2", - "resolve-url-loader": "5.0.0", - "rxjs": "6.6.7", - "sass": "1.57.1", - "sass-loader": "13.2.0", - "semver": "7.3.8", - "source-map-loader": "4.0.1", - "source-map-support": "0.5.21", - "terser": "5.16.1", - "text-table": "0.2.0", - "tree-kill": "1.2.2", - "tslib": "2.4.1", - "webpack": "5.75.0", - "webpack-dev-middleware": "6.0.1", - "webpack-dev-server": "4.11.1", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "5.1.0" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - } - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1501.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1501.0.tgz", - "integrity": "sha512-Roy3g30XZ1+BaM2K9HRVgYyrwduTyBr9qGlqGdeLRfqmqu/4w2CO/PU5E1vEkeEvl/AuORWQ53Hedgnycc8gqg==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1501.0", - "rxjs": "6.6.7" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular-devkit/core": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-15.1.0.tgz", - "integrity": "sha512-4FkoYgfuttp0ZD8NaVRr9Ya7kgSMkrXjJ5JIFlR4F49kTJXUpNB5xZeTS5CPh+wuP3o4IXpzn4A6M9vluJ5TFw==", - "devOptional": true, - "requires": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "devOptional": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "devOptional": true - } - } - }, - "@angular-devkit/schematics": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.1.0.tgz", - "integrity": "sha512-uCvxdhOZLRAjzUSPphVhAuAmUJ66FsQsyOD48gGr3Dpz0yNY570ill5CoBCMNbsP110p8E3O6OFXkbSxgDxEUA==", - "devOptional": true, - "requires": { - "@angular-devkit/core": "15.1.0", - "jsonc-parser": "3.2.0", - "magic-string": "0.27.0", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "devOptional": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "devOptional": true - } - } - }, - "@angular-eslint/builder": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-15.1.0.tgz", - "integrity": "sha512-MoPeJv4a1wSoFj8fVA01hFb+QQke2t74CSVuc6o4EqkWI0tYMM1Wg19fPtTZnj4spkGA82j2mf/tazKGRe/nrw==", - "dev": true, - "requires": {} - }, - "@angular-eslint/bundled-angular-compiler": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-15.1.0.tgz", - "integrity": "sha512-zcOx+PnYuVDIG3wd/JVzCYdEUarKGtgIcN4iU9ZF+BVk5e8i9cbD3U8U3EDJKbrrokbFl9GBBJMCOa6XYTGJwQ==", - "dev": true - }, - "@angular-eslint/eslint-plugin": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-15.1.0.tgz", - "integrity": "sha512-3RRDnxaCEI5DdKq3hipXvrxctPPssrUXnNbgczJRIJ3cssr4ndobCSNqUSepA6vWj5mWe7w+nnh4vgfhZ5keig==", - "dev": true, - "requires": { - "@angular-eslint/utils": "15.1.0", - "@typescript-eslint/utils": "5.44.0" - } - }, - "@angular-eslint/eslint-plugin-template": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-15.1.0.tgz", - "integrity": "sha512-WofUNiLcO/oprnzswkF+u1PC6ulmqB/m7fNKMMnbExMYuK1P38gjp59FW7E+2Ivz+A4/8a5xV+U+cy3oRgh4NQ==", - "dev": true, - "requires": { - "@angular-eslint/bundled-angular-compiler": "15.1.0", - "@angular-eslint/utils": "15.1.0", - "@typescript-eslint/type-utils": "5.44.0", - "@typescript-eslint/utils": "5.44.0", - "aria-query": "5.1.3", - "axobject-query": "3.1.1" - } - }, - "@angular-eslint/schematics": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-15.1.0.tgz", - "integrity": "sha512-BJm7FFVCad8TV8Gtwq+FbgtLGvjJDlpt5Rne1hCd4nCr8vlQZxSWVwnTHRkAs+qd5dYn3p7bGcKZxEZzeVkWjA==", - "dev": true, - "requires": { - "@angular-eslint/eslint-plugin": "15.1.0", - "@angular-eslint/eslint-plugin-template": "15.1.0", - "ignore": "5.2.0", - "strip-json-comments": "3.1.1", - "tmp": "0.2.1" - } - }, - "@angular-eslint/template-parser": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-15.1.0.tgz", - "integrity": "sha512-ctcA7OAV1wwFByW1te3uZwzySuIRlo8NblG5yUtgU5BXt3nXwIDwoSr3tvI2dRHobNHcXVQcOFVzyOdXD/vsIg==", - "dev": true, - "requires": { - "@angular-eslint/bundled-angular-compiler": "15.1.0", - "eslint-scope": "^7.0.0" - } - }, - "@angular-eslint/utils": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-15.1.0.tgz", - "integrity": "sha512-Vt59o7wq3UOgHSCrOaHg0SgxgbAGhG0ofNQwd7sLqNP2/w/90dWY2jwWXIVSuZ+BmfVj3wgNi3KujbSWJP1cfg==", - "dev": true, - "requires": { - "@angular-eslint/bundled-angular-compiler": "15.1.0", - "@typescript-eslint/utils": "5.44.0" - } - }, - "@angular/cli": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-15.1.0.tgz", - "integrity": "sha512-GjLmlFH46ErMXstfMwl3DSuhME0hX999NDHm+tBu7239OomgQMSmiLGmcv7FJMqoUnS4LBhzHGfE4lougDRxyw==", - "devOptional": true, - "requires": { - "@angular-devkit/architect": "0.1501.0", - "@angular-devkit/core": "15.1.0", - "@angular-devkit/schematics": "15.1.0", - "@schematics/angular": "15.1.0", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.3", - "ini": "3.0.1", - "inquirer": "8.2.4", - "jsonc-parser": "3.2.0", - "npm-package-arg": "10.1.0", - "npm-pick-manifest": "8.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "15.0.8", - "resolve": "1.22.1", - "semver": "7.3.8", - "symbol-observable": "4.0.0", - "yargs": "17.6.2" - } - }, - "@angular/common": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-15.1.0.tgz", - "integrity": "sha512-O0JKOeJ7dFcd/mnnfm4xQOYTAc+yL+OrRpGte7z84lKPU2fupLpGW/30tHUy1TXixsANyTLC3cTVXTY5szPdqg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-15.1.0.tgz", - "integrity": "sha512-+ky5Cvgps725Q/KdgsYzi/fe9LbT5ujhZoT9N5k+tYTJsepMUrpExFwMFkWrdMUYTK7DaxC9ufjZ4WZmHVhFoA==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler-cli": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-15.1.0.tgz", - "integrity": "sha512-mKeXolM/plP9ebkHy3YGxHx0Yg63d09S0QCpdIcmvrbJpaPeM2D1SAkbDpO46T4BsfgfWHtSYByb5JcesrYrpQ==", - "requires": { - "@babel/core": "7.19.3", - "@jridgewell/sourcemap-codec": "^1.4.14", - "chokidar": "^3.0.0", - "convert-source-map": "^1.5.1", - "dependency-graph": "^0.11.0", - "magic-string": "^0.27.0", - "reflect-metadata": "^0.1.2", - "semver": "^7.0.0", - "tslib": "^2.3.0", - "yargs": "^17.2.1" - }, - "dependencies": { - "@babel/core": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.3", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.3", - "@babel/types": "^7.19.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - } - } - }, - "@angular/core": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-15.1.0.tgz", - "integrity": "sha512-HiwctuR73MuLoLeP35j9xF8/SIg7ELx+iHZtp/TBfoH+LOmjWbdrAdVAPTbqnxvK0aJG+527dhgC6tBOXgBTcg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/forms": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-15.1.0.tgz", - "integrity": "sha512-MUAbruJng0iG/cHhCkDNrh31Y54upgBUjjkE4DnoHv138Wa7vba+GMYv2tTrs4rPWnB9vPziZgI0xIi/oSGxzg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/localize": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-15.1.0.tgz", - "integrity": "sha512-BTEBMKqS4F8lK4rIsydRsxMbQ1hFnDZTZoifT33dmmOworWFJCGryYw0ZCTkeBtCnkRGgnr1aOTIHTvJPFIMiA==", - "requires": { - "@babel/core": "7.19.3", - "glob": "8.0.3", - "yargs": "^17.2.1" - }, - "dependencies": { - "@babel/core": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.3", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.3", - "@babel/types": "^7.19.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@angular/platform-browser": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-15.1.0.tgz", - "integrity": "sha512-yuJweAR+rJhWWHM4Im3Iy6S4+W3OtcVHijcqrxfVxiA9ZHbDw/jpYDi06ZZIgfnNyGWi5/BzJbHvxH3b0lAo5Q==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-15.1.0.tgz", - "integrity": "sha512-ukyycXkuu4Ah/35cbN4pEB91D2PK5eZVbJ+liCD6uRb4UI3X+QVg6Qz6MoIctVAlTV6tWK20T81zoux9SzWKsg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/router": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-15.1.0.tgz", - "integrity": "sha512-78ItVVXOYdu/RRxruHwSmtNxEP2clx+afHKrkwc4e7/6uxVr4rl0VQhO6qHYme/bBtbLIcBZGJoSyoUg/xUSvQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", - "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==" - }, - "@babel/core": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", - "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.12", - "@babel/types": "^7.20.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", - "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", - "requires": { - "@babel/types": "^7.20.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@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, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", - "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "requires": { - "@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" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - } - }, - "@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==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", - "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", - "dev": true, - "requires": { - "@babel/types": "^7.20.7" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" - } - }, - "@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, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true - }, - "@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, - "requires": { - "@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" - } - }, - "@babel/helper-replace-supers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", - "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" - } - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@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, - "requires": { - "@babel/types": "^7.20.0" - } - }, - "@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==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" - }, - "@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==" - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - }, - "@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, - "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" - } - }, - "@babel/helpers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", - "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", - "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==" - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", - "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@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, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", - "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", - "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", - "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@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, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-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, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-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, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", - "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@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, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9" - } - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", - "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", - "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", - "dev": true, - "requires": { - "@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.19.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" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", - "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/template": "^7.20.7" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", - "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@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, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@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, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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, - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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, - "requires": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", - "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", - "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" - } - }, - "@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, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", - "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" - } - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", - "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" - } - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@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, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@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-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-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@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.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@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, - "requires": { - "@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" - } - }, - "@babel/runtime": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", - "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.11" - } - }, - "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - } - }, - "@babel/traverse": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", - "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "optional": true - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, - "@ctrl/tinycolor": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.5.0.tgz", - "integrity": "sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg==" - }, - "@cypress/request": { - "version": "2.88.11", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", - "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==", - "optional": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "http-signature": "~1.3.6", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "~6.10.3", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "optional": true - } - } - }, - "@cypress/schematic": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@cypress/schematic/-/schematic-2.4.0.tgz", - "integrity": "sha512-aor8hQ+gMXqx/ASdo7CUGo/sMEWwwfSRsLr99rM2GjvW+pZnCKKTnRG4UPf8Ro9SevLJj7KRZAZWxa5MAkJzZA==", - "optional": true, - "requires": { - "@angular-devkit/architect": "^0.1402.1", - "@angular-devkit/core": "^14.2.1", - "@angular-devkit/schematics": "^14.2.1", - "@schematics/angular": "^14.2.1", - "jsonc-parser": "^3.0.0", - "rxjs": "~6.6.0" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1402.10", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", - "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", - "optional": true, - "requires": { - "@angular-devkit/core": "14.2.10", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", - "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", - "optional": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - } - }, - "@angular-devkit/schematics": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.10.tgz", - "integrity": "sha512-MMp31KpJTwKHisXOq+6VOXYApq97hZxFaFmZk396X5aIFTCELUwjcezQDk+u2nEs5iK/COUfnN3plGcfJxYhQA==", - "optional": true, - "requires": { - "@angular-devkit/core": "14.2.10", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - } - }, - "@schematics/angular": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.10.tgz", - "integrity": "sha512-YFTc/9QJdx422XcApizEcVLKoyknu8b9zHIlAepZCu7WkV8GPT0hvVEHQ7KBWys5aQ7pPZMT0JpZLeAz0F2xYQ==", - "optional": true, - "requires": { - "@angular-devkit/core": "14.2.10", - "@angular-devkit/schematics": "14.2.10", - "jsonc-parser": "3.1.0" - } - }, - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "optional": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "optional": true - }, - "magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", - "optional": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "optional": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - } - } - }, - "@cypress/xvfb": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", - "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "optional": true, - "requires": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "optional": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "@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 - }, - "@esbuild/android-arm": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.16.tgz", - "integrity": "sha512-BUuWMlt4WSXod1HSl7aGK8fJOsi+Tab/M0IDK1V1/GstzoOpqc/v3DqmN8MkuapPKQ9Br1WtLAN4uEgWR8x64A==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.16.tgz", - "integrity": "sha512-hFHVAzUKp9Tf8psGq+bDVv+6hTy1bAOoV/jJMUWwhUnIHsh6WbFMhw0ZTkqDuh7TdpffFoHOiIOIxmHc7oYRBQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.16.tgz", - "integrity": "sha512-9WhxJpeb6XumlfivldxqmkJepEcELekmSw3NkGrs+Edq6sS5KRxtUBQuKYDD7KqP59dDkxVbaoPIQFKWQG0KLg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.16.tgz", - "integrity": "sha512-8Z+wld+vr/prHPi2O0X7o1zQOfMbXWGAw9hT0jEyU/l/Yrg+0Z3FO9pjPho72dVkZs4ewZk0bDOFLdZHm8jEfw==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.16.tgz", - "integrity": "sha512-CYkxVvkZzGCqFrt7EgjFxQKhlUPyDkuR9P0Y5wEcmJqVI8ncerOIY5Kej52MhZyzOBXkYrJgZeVZC9xXXoEg9A==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.16.tgz", - "integrity": "sha512-fxrw4BYqQ39z/3Ja9xj/a1gMsVq0xEjhSyI4a9MjfvDDD8fUV8IYliac96i7tzZc3+VytyXX+XNsnpEk5sw5Wg==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.16.tgz", - "integrity": "sha512-8p3v1D+du2jiDvSoNVimHhj7leSfST9YlKsAEO7etBfuqjaBMndo0fmjNLp0JCMld+XIx9L80tooOkyUv1a1PQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.16.tgz", - "integrity": "sha512-bYaocE1/PTMRmkgSckZ0D0Xn2nox8v2qlk+MVVqm+VECNKDdZvghVZtH41dNtBbwADSvA6qkCHGYeWm9LrNCBw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.16.tgz", - "integrity": "sha512-N3u6BBbCVY3xeP2D8Db7QY8I+nZ+2AgOopUIqk+5yCoLnsWkcVxD2ay5E9iIdvApFi1Vg1lZiiwaVp8bOpAc4A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.16.tgz", - "integrity": "sha512-dxjqLKUW8GqGemoRT9v8IgHk+T4tRm1rn1gUcArsp26W9EkK/27VSjBVUXhEG5NInHZ92JaQ3SSMdTwv/r9a2A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.16.tgz", - "integrity": "sha512-MdUFggHjRiCCwNE9+1AibewoNq6wf94GLB9Q9aXwl+a75UlRmbRK3h6WJyrSGA6ZstDJgaD2wiTSP7tQNUYxwA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.16.tgz", - "integrity": "sha512-CO3YmO7jYMlGqGoeFeKzdwx/bx8Vtq/SZaMAi+ZLDUnDUdfC7GmGwXzIwDJ70Sg+P9pAemjJyJ1icKJ9R3q/Fg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.16.tgz", - "integrity": "sha512-DSl5Czh5hCy/7azX0Wl9IdzPHX2H8clC6G87tBnZnzUpNgRxPFhfmArbaHoAysu4JfqCqbB/33u/GL9dUgCBAw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.16.tgz", - "integrity": "sha512-sSVVMEXsqf1fQu0j7kkhXMViroixU5XoaJXl1u/u+jbXvvhhCt9YvA/B6VM3aM/77HuRQ94neS5bcisijGnKFQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.16.tgz", - "integrity": "sha512-jRqBCre9gZGoCdCN/UWCCMwCMsOg65IpY9Pyj56mKCF5zXy9d60kkNRdDN6YXGjr3rzcC4DXnS/kQVCGcC4yPQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.16.tgz", - "integrity": "sha512-G1+09TopOzo59/55lk5Q0UokghYLyHTKKzD5lXsAOOlGDbieGEFJpJBr3BLDbf7cz89KX04sBeExAR/pL/26sA==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.16.tgz", - "integrity": "sha512-xwjGJB5wwDEujLaJIrSMRqWkbigALpBNcsF9SqszoNKc+wY4kPTdKrSxiY5ik3IatojePP+WV108MvF6q6np4w==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.16.tgz", - "integrity": "sha512-yeERkoxG2nR2oxO5n+Ms7MsCeNk23zrby2GXCqnfCpPp7KNc0vxaaacIxb21wPMfXXRhGBrNP4YLIupUBrWdlg==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.16.tgz", - "integrity": "sha512-nHfbEym0IObXPhtX6Va3H5GaKBty2kdhlAhKmyCj9u255ktAj0b1YACUs9j5H88NRn9cJCthD1Ik/k9wn8YKVg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.16.tgz", - "integrity": "sha512-pdD+M1ZOFy4hE15ZyPX09fd5g4DqbbL1wXGY90YmleVS6Y5YlraW4BvHjim/X/4yuCpTsAFvsT4Nca2lbyDH/A==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.16.tgz", - "integrity": "sha512-IPEMfU9p0c3Vb8PqxaPX6BM9rYwlTZGYOf9u+kMdhoILZkVKEjq6PKZO0lB+isojWwAnAqh4ZxshD96njTXajg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.16.tgz", - "integrity": "sha512-1YYpoJ39WV/2bnShPwgdzJklc+XS0bysN6Tpnt1cWPdeoKOG4RMEY1g7i534QxXX/rPvNx/NLJQTTCeORYzipg==", - "dev": true, - "optional": true - }, - "@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "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 - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "devOptional": true - }, - "@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 - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dev": true, - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/core": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", - "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/reporters": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.1.3", - "jest-config": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-resolve-dependencies": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "jest-watcher": "^28.1.3", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/environment": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", - "dev": true, - "requires": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" - } - }, - "@jest/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", - "dev": true, - "requires": { - "expect": "^28.1.3", - "jest-snapshot": "^28.1.3" - } - }, - "@jest/expect-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", - "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", - "dev": true, - "requires": { - "jest-get-type": "^28.0.2" - } - }, - "@jest/fake-timers": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - } - }, - "@jest/globals": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", - "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", - "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/types": "^28.1.3" - } - }, - "@jest/reporters": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", - "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.24.1" - } - }, - "@jest/source-map": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", - "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.13", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", - "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", - "dev": true, - "requires": { - "@jest/test-result": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "requires": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@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==" - }, - "@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==" - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@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==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@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 - }, - "@ng-bootstrap/ng-bootstrap": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-14.0.1.tgz", - "integrity": "sha512-JF4U4IIix+g6VBFfG8stf0Un5K//ypoN+pTuRs6kjUhsHBsa2m7yKE6bCe3fMhatFZFr2fcSswDzRUnAUiHhWg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@ng-select/ng-select": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-10.0.3.tgz", - "integrity": "sha512-Ma8pzKMI5TWnsKgOiONQLGeUeTko9gI6AtqpMMOVhrCktjtUSo9h5N17WomHRGtba9D7QviTZcR7UBhKOPwZ7g==", - "requires": { - "tslib": "^2.3.1" - } - }, - "@ngneat/dirty-check-forms": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@ngneat/dirty-check-forms/-/dirty-check-forms-3.0.3.tgz", - "integrity": "sha512-YGlKrAaqTRO8lfT1xyN9LkYN0GH0crzdnXAxQFNEuNDQpCHv9cQ0j9XPDsonek6X4K7fLug84n0CQ42rSmGBqw==", - "requires": { - "tslib": ">=2.0.0" - } - }, - "@ngtools/webpack": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-15.1.0.tgz", - "integrity": "sha512-7CyQk5eADg0fsi+EDa3DWIyR+CjymcyToWU0uBpuyrZCl5gUnzgeWZIQiQ0HyaMxWPfQ5cwwZ1YeAwkxMpKL2w==", - "dev": true, - "requires": {} - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "devOptional": true, - "requires": { - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.3.tgz", - "integrity": "sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==", - "devOptional": true, - "requires": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", - "devOptional": true - }, - "which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", - "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", - "devOptional": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@npmcli/installed-package-contents": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.1.tgz", - "integrity": "sha512-GIykAFdOVK31Q1/zAtT5MbxqQL2vyl9mvFJv+OGu01zxbhL3p0xc8gJjdNGX1mWmUT43aEKVO2L6V/2j4TOsAA==", - "devOptional": true, - "requires": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - } - }, - "@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "devOptional": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", - "devOptional": true - }, - "@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "devOptional": true, - "requires": { - "which": "^3.0.0" - }, - "dependencies": { - "which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", - "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", - "devOptional": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@npmcli/run-script": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.0.tgz", - "integrity": "sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==", - "devOptional": true, - "requires": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - }, - "dependencies": { - "which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", - "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", - "devOptional": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" - }, - "@schematics/angular": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-15.1.0.tgz", - "integrity": "sha512-TOtmPcMOZTLteoJsXYZ5qRUaOKlZkq62TVV8nt9+I+e2SZ/G9zVr1KXWweCPwFje0y4W1KrHUw6e4sMNkD1f4A==", - "devOptional": true, - "requires": { - "@angular-devkit/core": "15.1.0", - "@angular-devkit/schematics": "15.1.0", - "jsonc-parser": "3.2.0" - } - }, - "@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, - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@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 - }, - "@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 - }, - "@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true - }, - "@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "devOptional": true - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "@types/babel__core": { - "version": "7.1.20", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", - "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", - "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@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, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/express": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", - "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.31", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.32", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", - "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "28.1.6", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.6.tgz", - "integrity": "sha512-0RbGAFMfcBJKOmqRazM8L98uokwuwD5F8rHrv/ZMbrZBwVOWZUyPG6VFNscjYr/vjM3Vu4fRrCPbOs42AfemaQ==", - "dev": true, - "requires": { - "jest-matcher-utils": "^28.0.0", - "pretty-format": "^28.0.0" - } - }, - "@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - }, - "dependencies": { - "entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", - "dev": true - }, - "parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "requires": { - "entities": "^4.4.0" - } - } - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", - "devOptional": true - }, - "@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 - }, - "@types/parse5": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", - "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", - "dev": true - }, - "@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/sinonjs__fake-timers": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "optional": true - }, - "@types/sizzle": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", - "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", - "optional": true - }, - "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/tough-cookie": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", - "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", - "dev": true - }, - "@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, - "requires": { - "@types/node": "*" - } - }, - "@types/yargs": { - "version": "17.0.19", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.19.tgz", - "integrity": "sha512-cAx3qamwaYX9R0fzOIZAlFpo4A+1uBVCxqpKz9D26uTF4srRXaGTTsikQmaotCtNdbhzyUH7ft6p9ktz9s6UNQ==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.1.tgz", - "integrity": "sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.48.1", - "@typescript-eslint/type-utils": "5.48.1", - "@typescript-eslint/utils": "5.48.1", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "dependencies": { - "@typescript-eslint/type-utils": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz", - "integrity": "sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.48.1", - "@typescript-eslint/utils": "5.48.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.1.tgz", - "integrity": "sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.48.1", - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/typescript-estree": "5.48.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "@typescript-eslint/parser": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", - "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", - "debug": "^4.3.4" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", - "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0" - } - }, - "@typescript-eslint/types": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", - "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", - "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", - "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.50.0", - "eslint-visitor-keys": "^3.3.0" - } - } - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.1.tgz", - "integrity": "sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/visitor-keys": "5.48.1" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", - "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.44.0", - "@typescript-eslint/utils": "5.44.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "dependencies": { - "@typescript-eslint/types": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", - "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", - "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", - "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "eslint-visitor-keys": "^3.3.0" - } - } - } - }, - "@typescript-eslint/types": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.1.tgz", - "integrity": "sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz", - "integrity": "sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/visitor-keys": "5.48.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", - "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", - "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0" - } - }, - "@typescript-eslint/types": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", - "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", - "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", - "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.1.tgz", - "integrity": "sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.48.1", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@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 - }, - "@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 - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "devOptional": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "devOptional": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "requires": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "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 - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "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, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "devOptional": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "devOptional": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "devOptional": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "devOptional": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "devOptional": true, - "requires": { - "ajv": "^8.0.0" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "ansi-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==", - "devOptional": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "devOptional": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "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==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "devOptional": true - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "optional": true - }, - "are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "devOptional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "requires": { - "deep-equal": "^2.0.5" - } - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "optional": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "optional": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "optional": true - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "devOptional": true - }, - "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==", - "optional": true - }, - "autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "optional": true - }, - "aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "optional": true - }, - "axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", - "dev": true, - "requires": { - "follow-redirects": "^1.14.7" - } - }, - "axobject-query": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", - "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", - "dev": true, - "requires": { - "deep-equal": "^2.0.5" - } - }, - "babel-jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", - "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", - "dev": true, - "requires": { - "@jest/transform": "^28.1.3", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^28.1.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "babel-loader": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.2.tgz", - "integrity": "sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.2", - "schema-utils": "^4.0.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", - "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", - "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^28.1.3", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "devOptional": true - }, - "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 - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "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 - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "devOptional": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "blob-util": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "optional": true - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "optional": true - }, - "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, - "requires": { - "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" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "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 - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - } - } - }, - "bonjour-service": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.0.tgz", - "integrity": "sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q==", - "dev": true, - "requires": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "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 - }, - "bootstrap": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", - "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", - "requires": {} - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "devOptional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "devOptional": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "optional": true - }, - "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 - }, - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "devOptional": true, - "requires": { - "semver": "^7.0.0" - } - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true - }, - "cacache": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", - "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", - "devOptional": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^8.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", - "devOptional": true - } - } - }, - "cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", - "optional": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "devOptional": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001443", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001443.tgz", - "integrity": "sha512-jUo8svymO8+Mkj3qbUbVjR8zv8LUGpGkUM/jKvc9SO2BvjCI980dp9fQbf/dyLs6RascPzgR4nhAKFA4OHeSaA==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "optional": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "devOptional": true - }, - "check-more-types": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "optional": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "devOptional": true - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "ci-info": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", - "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", - "devOptional": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "devOptional": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "devOptional": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "devOptional": true - }, - "cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "optional": true, - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "optional": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "devOptional": true - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "devOptional": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "devOptional": true - }, - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "devOptional": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "devOptional": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "optional": true - }, - "common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "optional": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "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 - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "devOptional": true - }, - "concurrently": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.4.0.tgz", - "integrity": "sha512-M6AfrueDt/GEna/Vg9BqQ+93yuvzkSKmoTixnwEJkH0LlcGrRC2eCmjeG1tLLHIYfpYJABokqSGyMcXjm96AFA==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "date-fns": "^2.29.1", - "lodash": "^4.17.21", - "rxjs": "^7.0.0", - "shell-quote": "^1.7.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^17.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "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 - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "devOptional": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "requires": { - "is-what": "^3.14.1" - } - }, - "copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "dev": true, - "requires": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globby": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", - "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - } - } - }, - "core-js-compat": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", - "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", - "dev": true, - "requires": { - "browserslist": "^4.21.4" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "devOptional": true - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "requires": { - "@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" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "css-select": "^4.2.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "postcss": "^8.3.7", - "pretty-bytes": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "devOptional": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css-loader": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", - "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.19", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" - } - }, - "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, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "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 - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "cypress": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.9.0.tgz", - "integrity": "sha512-MjIWrRpc+bQM9U4kSSdATZWZ2hUqHGFEQTF7dfeZRa4MnalMtc88FIE49USWP2ZVtfy5WPBcgfBX+YorFqGElA==", - "optional": true, - "requires": { - "@cypress/request": "^2.88.10", - "@cypress/xvfb": "^1.2.4", - "@types/node": "^14.14.31", - "@types/sinonjs__fake-timers": "8.1.1", - "@types/sizzle": "^2.3.2", - "arch": "^2.2.0", - "blob-util": "^2.0.2", - "bluebird": "^3.7.2", - "buffer": "^5.6.0", - "cachedir": "^2.3.0", - "chalk": "^4.1.0", - "check-more-types": "^2.24.0", - "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", - "commander": "^5.1.0", - "common-tags": "^1.8.0", - "dayjs": "^1.10.4", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "eventemitter2": "6.4.7", - "execa": "4.1.0", - "executable": "^4.1.1", - "extract-zip": "2.0.1", - "figures": "^3.2.0", - "fs-extra": "^9.1.0", - "getos": "^3.2.1", - "is-ci": "^3.0.0", - "is-installed-globally": "~0.4.0", - "lazy-ass": "^1.6.0", - "listr2": "^3.8.3", - "lodash": "^4.17.21", - "log-symbols": "^4.0.0", - "minimist": "^1.2.6", - "ospath": "^1.2.2", - "pretty-bytes": "^5.6.0", - "proxy-from-env": "1.0.0", - "request-progress": "^3.0.0", - "semver": "^7.3.2", - "supports-color": "^8.1.1", - "tmp": "~0.2.1", - "untildify": "^4.0.0", - "yauzl": "^2.10.0" - }, - "dependencies": { - "@types/node": { - "version": "14.18.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", - "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", - "optional": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "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==", - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "optional": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "requires": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - } - }, - "date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", - "dev": true - }, - "dayjs": { - "version": "1.11.7", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", - "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", - "optional": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "deep-equal": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", - "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.2", - "get-intrinsic": "^1.1.3", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "requires": { - "execa": "^5.0.0" - }, - "dependencies": { - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "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 - }, - "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 - } - } - }, - "defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "devOptional": true, - "requires": { - "clone": "^1.0.2" - } - }, - "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==", - "devOptional": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "devOptional": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "devOptional": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "devOptional": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", - "dev": true, - "requires": { - "@leichtgewicht/ip-codec": "^2.0.1" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "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, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "requires": { - "webidl-conversions": "^7.0.0" - } - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "dommatrix": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dommatrix/-/dommatrix-1.0.3.tgz", - "integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==" - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "optional": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "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 - }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - }, - "emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "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 - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "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==", - "optional": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "optional": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "devOptional": true - }, - "err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "devOptional": true - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-get-iterator": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", - "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.0", - "has-symbols": "^1.0.1", - "is-arguments": "^1.1.0", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "esbuild": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.16.tgz", - "integrity": "sha512-24JyKq10KXM5EBIgPotYIJ2fInNWVVqflv3gicIyQqfmUqi4HvDW1VR790cBgLJHCl96Syy7lhoz7tLFcmuRmg==", - "dev": true, - "optional": true, - "requires": { - "@esbuild/android-arm": "0.16.16", - "@esbuild/android-arm64": "0.16.16", - "@esbuild/android-x64": "0.16.16", - "@esbuild/darwin-arm64": "0.16.16", - "@esbuild/darwin-x64": "0.16.16", - "@esbuild/freebsd-arm64": "0.16.16", - "@esbuild/freebsd-x64": "0.16.16", - "@esbuild/linux-arm": "0.16.16", - "@esbuild/linux-arm64": "0.16.16", - "@esbuild/linux-ia32": "0.16.16", - "@esbuild/linux-loong64": "0.16.16", - "@esbuild/linux-mips64el": "0.16.16", - "@esbuild/linux-ppc64": "0.16.16", - "@esbuild/linux-riscv64": "0.16.16", - "@esbuild/linux-s390x": "0.16.16", - "@esbuild/linux-x64": "0.16.16", - "@esbuild/netbsd-x64": "0.16.16", - "@esbuild/openbsd-x64": "0.16.16", - "@esbuild/sunos-x64": "0.16.16", - "@esbuild/win32-arm64": "0.16.16", - "@esbuild/win32-ia32": "0.16.16", - "@esbuild/win32-x64": "0.16.16" - } - }, - "esbuild-wasm": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.16.16.tgz", - "integrity": "sha512-X7wDIw8Pg0WFfDyrUhMpoMaGuCPeAfsQL8zJq5OeYQoNNXIvx8C+E1gz31bLcEOEhx0MBvupAM6ZI2D0sR8Fsw==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "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 - }, - "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==" - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, - "eslint": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", - "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.4.1", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "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 - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true - }, - "eventemitter-asyncresource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "eventemitter2": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "optional": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "optional": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "optional": true, - "requires": { - "pify": "^2.2.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true - }, - "expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", - "dev": true, - "requires": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "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 - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "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 - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "optional": true - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "devOptional": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "dependencies": { - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "devOptional": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - } - } - }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "optional": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "optional": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "devOptional": true - }, - "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==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "optional": true, - "requires": { - "pend": "~1.2.0" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "devOptional": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-saver": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", - "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "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, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "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 - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "optional": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "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 - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "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==", - "optional": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-minipass": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.0.tgz", - "integrity": "sha512-EUojgQaSPy6sxcqcZgQv6TVF6jiKvurji3AxhAivs/Ep4O1UpS8TusaxpybfFHZ2skRhLqzk6WR8nqNYIMMDeA==", - "devOptional": true, - "requires": { - "minipass": "^4.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "devOptional": true - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "devOptional": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, - "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==" - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "devOptional": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "optional": true, - "requires": { - "pump": "^3.0.0" - } - }, - "getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "optional": true, - "requires": { - "async": "^3.2.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "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 - }, - "global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "optional": true, - "requires": { - "ini": "2.0.0" - }, - "dependencies": { - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "optional": true - } - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "devOptional": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "devOptional": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "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==" - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "devOptional": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "devOptional": true - }, - "hdr-histogram-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, - "requires": { - "@assemblyscript/loader": "^0.10.1", - "base64-js": "^1.2.0", - "pako": "^1.0.3" - } - }, - "hdr-histogram-percentiles-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "devOptional": true, - "requires": { - "lru-cache": "^7.5.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", - "devOptional": true - } - } - }, - "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, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "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 - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "requires": { - "whatwg-encoding": "^2.0.0" - } - }, - "html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "devOptional": true - }, - "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 - }, - "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, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "dependencies": { - "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 - } - } - }, - "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 - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "devOptional": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "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, - "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - } - }, - "http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "devOptional": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "optional": true - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "devOptional": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "devOptional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "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, - "requires": {} - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "devOptional": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "ignore-walk": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.0.tgz", - "integrity": "sha512-bTf9UWe/UP1yxG3QUrj/KOvEhTAUWPcv+WvbFZ28LcqznXabp7Xu6o9y1JEC18+oqODuS7VhTpekV5XvFwsxJg==", - "devOptional": true, - "requires": { - "minimatch": "^5.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "devOptional": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", - "devOptional": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "optional": true - }, - "immutable": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz", - "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "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 - } - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "devOptional": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "devOptional": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "devOptional": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", - "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", - "devOptional": true - }, - "inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", - "devOptional": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "devOptional": true - }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-array-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", - "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" - } - }, - "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 - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "optional": true, - "requires": { - "ci-info": "^3.2.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "devOptional": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "devOptional": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "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==" - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "optional": true, - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, - "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==", - "devOptional": true - }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "devOptional": true - }, - "is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "devOptional": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "devOptional": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "optional": true - }, - "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==", - "devOptional": true - }, - "is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true - }, - "is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "devOptional": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "devOptional": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "optional": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", - "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", - "dev": true, - "requires": { - "@jest/core": "^28.1.3", - "@jest/types": "^28.1.3", - "import-local": "^3.0.2", - "jest-cli": "^28.1.3" - } - }, - "jest-changed-files": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", - "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", - "dev": true, - "requires": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "dependencies": { - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "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 - }, - "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 - } - } - }, - "jest-circus": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", - "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", - "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "p-limit": "^3.1.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-cli": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", - "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", - "dev": true, - "requires": { - "@jest/core": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-config": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", - "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.3", - "@jest/types": "^28.1.3", - "babel-jest": "^28.1.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.3", - "jest-environment-node": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-docblock": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", - "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", - "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "jest-util": "^28.1.3", - "pretty-format": "^28.1.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-environment-jsdom": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.3.1.tgz", - "integrity": "sha512-G46nKgiez2Gy4zvYNhayfMEAFlVHhWfncqvqS6yCd0i+a4NsSUD2WtrKSaYQrYiLQaupHXxCRi8xxVL2M9PbhA==", - "dev": true, - "requires": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1", - "jsdom": "^20.0.0" - }, - "dependencies": { - "@jest/environment": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.3.1.tgz", - "integrity": "sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==", - "dev": true, - "requires": { - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/node": "*", - "jest-mock": "^29.3.1" - } - }, - "@jest/fake-timers": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.1.tgz", - "integrity": "sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==", - "dev": true, - "requires": { - "@jest/types": "^29.3.1", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" - } - }, - "@jest/schemas": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", - "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.24.1" - } - }, - "@jest/types": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", - "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", - "dev": true, - "requires": { - "@jest/schemas": "^29.0.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-message-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz", - "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.3.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.1.tgz", - "integrity": "sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==", - "dev": true, - "requires": { - "@jest/types": "^29.3.1", - "@types/node": "*", - "jest-util": "^29.3.1" - } - }, - "jest-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", - "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", - "dev": true, - "requires": { - "@jest/types": "^29.3.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "pretty-format": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz", - "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==", - "dev": true, - "requires": { - "@jest/schemas": "^29.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-environment-node": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", - "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", - "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - } - }, - "jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true - }, - "jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-leak-detector": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", - "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", - "dev": true, - "requires": { - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - } - }, - "jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} - }, - "jest-preset-angular": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-12.2.3.tgz", - "integrity": "sha512-9vgawXuki/lg4IRPtl5k83krWLKADTal7BBm06xNAWOK09AbHK1foXqZdVOMObsWbaMDeQ1cjba60vS/aEVY4Q==", - "dev": true, - "requires": { - "bs-logger": "^0.2.6", - "esbuild": ">=0.13.8", - "esbuild-wasm": ">=0.13.8", - "jest-environment-jsdom": "^28.0.0", - "pretty-format": "^28.0.0", - "ts-jest": "^28.0.0" - }, - "dependencies": { - "@types/jsdom": { - "version": "16.2.15", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.15.tgz", - "integrity": "sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/parse5": "^6.0.3", - "@types/tough-cookie": "*" - } - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "jest-environment-jsdom": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz", - "integrity": "sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg==", - "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/jsdom": "^16.2.4", - "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3", - "jsdom": "^19.0.0" - } - }, - "jsdom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", - "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.5.0", - "acorn-globals": "^6.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", - "xml-name-validator": "^4.0.0" - } - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - } - }, - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - }, - "w3c-xmlserializer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", - "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", - "dev": true, - "requires": { - "xml-name-validator": "^4.0.0" - } - }, - "whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", - "dev": true, - "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - } - } - } - }, - "jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true - }, - "jest-resolve": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", - "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-resolve-dependencies": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", - "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", - "dev": true, - "requires": { - "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.3" - } - }, - "jest-runner": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", - "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/environment": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-leak-detector": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-resolve": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-util": "^28.1.3", - "jest-watcher": "^28.1.3", - "jest-worker": "^28.1.3", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-runtime": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", - "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", - "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/globals": "^28.1.3", - "@jest/source-map": "^28.1.2", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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 - }, - "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 - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-snapshot": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", - "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-validate": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", - "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "leven": "^3.1.0", - "pretty-format": "^28.1.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "dev": true, - "requires": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-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, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "joi": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", - "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", - "dev": true, - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "optional": true - }, - "jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "requires": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "dependencies": { - "entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", - "dev": true - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "requires": { - "entities": "^4.4.0" - } - }, - "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - } - }, - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "optional": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "devOptional": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "optional": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "devOptional": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "optional": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "devOptional": true - }, - "jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "lazy-ass": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "optional": true - }, - "less": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", - "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", - "dev": true, - "requires": { - "copy-anything": "^2.0.1", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "parse-node-version": "^1.0.1", - "source-map": "~0.6.0", - "tslib": "^2.3.0" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "less-loader": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", - "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", - "dev": true, - "requires": { - "klona": "^2.0.4" - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "listr2": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", - "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "optional": true, - "requires": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.1", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - } - }, - "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 - }, - "loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "devOptional": true - }, - "lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "peer": true - }, - "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 - }, - "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 - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "optional": true - }, - "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==", - "devOptional": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "optional": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "optional": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "optional": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "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==", - "requires": { - "yallist": "^3.0.2" - } - }, - "magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.13" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "devOptional": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "dependencies": { - "@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "devOptional": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - } - }, - "cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "devOptional": true, - "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "devOptional": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", - "devOptional": true - }, - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "devOptional": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "devOptional": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "devOptional": true, - "requires": { - "unique-slug": "^3.0.0" - } - }, - "unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "devOptional": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true - } - } - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "material-colors": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", - "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" - }, - "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 - }, - "memfs": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz", - "integrity": "sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==", - "dev": true, - "requires": { - "fs-monkey": "^1.0.3" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "devOptional": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "devOptional": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "devOptional": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "devOptional": true - }, - "mini-css-extract-plugin": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz", - "integrity": "sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==", - "dev": true, - "requires": { - "schema-utils": "^4.0.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "devOptional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "devOptional": true - }, - "minipass": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", - "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", - "devOptional": true, - "requires": { - "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true - } - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "devOptional": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "devOptional": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true - } - } - }, - "minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "devOptional": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "devOptional": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true - } - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "devOptional": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "devOptional": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true - } - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "devOptional": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "devOptional": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true - } - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "devOptional": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "devOptional": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true - } - } - }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "devOptional": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "devOptional": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true - } - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "devOptional": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "devOptional": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true - } - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "devOptional": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "multicast-dns": { - "version": "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, - "requires": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - } - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "devOptional": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "needle": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", - "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "devOptional": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "ng2-pdf-viewer": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/ng2-pdf-viewer/-/ng2-pdf-viewer-9.1.3.tgz", - "integrity": "sha512-t2Gez92xPWPfY3qzzs+iLey5NUCYwJXIzv+dU4prY96aYdacsxuOpFjORW1+a330ryMkxYEJvEQ+mgbBJr77xw==", - "requires": { - "pdfjs-dist": "~2.14.305", - "tslib": "^2.3.1" - } - }, - "ngx-color": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/ngx-color/-/ngx-color-8.0.3.tgz", - "integrity": "sha512-tuLP+uIoDEu2m0bh711kb2P1M1bh/oIrOn8mJd9mb8xGL2v+OcokcxPmVvWRn0avMG1lXL53CjSlWXGkdV4CDA==", - "requires": { - "@ctrl/tinycolor": "^3.4.1", - "material-colors": "^1.2.6", - "tslib": "^2.3.0" - } - }, - "ngx-cookie-service": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-15.0.0.tgz", - "integrity": "sha512-KU1JCjfpDTvD6L0FhHN9W/oP3Sue8yMAAK6XY3h/MEhrPS7vx6t3+h0ulY8l8R/9d1cmlQVyTHn1Jd1Jdf5K+g==", - "requires": { - "tslib": "^2.0.0" - } - }, - "ngx-file-drop": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/ngx-file-drop/-/ngx-file-drop-14.0.2.tgz", - "integrity": "sha512-tIW+Ymd2IOjUQTqMb2NiuupeRPWwKe19kHmb13gf4Iw8rkvrO6PlqqZ3EqSGPIEJOmV836FZHpM4B1xXjVQLfA==", - "requires": { - "tslib": "^2.3.0" - } - }, - "ngx-ui-tour-core": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/ngx-ui-tour-core/-/ngx-ui-tour-core-10.0.0.tgz", - "integrity": "sha512-F7Pa8JtRjqFCPuPcOpSVBJwNNHmgCTNzfH2wAvPigvNEVM8WtAcaOmtYRN4QBP6WZK0JnCxuGXk7RJLmIY0rXA==", - "requires": { - "tslib": "^2.0.0" - } - }, - "ngx-ui-tour-ng-bootstrap": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/ngx-ui-tour-ng-bootstrap/-/ngx-ui-tour-ng-bootstrap-12.0.0.tgz", - "integrity": "sha512-HFBGXRHNW5yBq5lPtXXRSkTHmAEZLnj8fmc/BZoMF4MrfIle5CmkVfLnZ+XYPatB2oJsOKcbBMnzbZlJtoymtA==", - "requires": { - "ngx-ui-tour-core": "10.0.0", - "tslib": "^2.0.0" - } - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "optional": true - }, - "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 - }, - "node-gyp": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", - "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", - "devOptional": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "devOptional": true, - "requires": { - "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" - } - } - } - }, - "node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "dev": true, - "optional": true - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==" - }, - "nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "devOptional": true, - "requires": { - "abbrev": "^1.0.0" - } - }, - "normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "devOptional": true, - "requires": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "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 - }, - "npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", - "devOptional": true, - "requires": { - "npm-normalize-package-bin": "^3.0.0" - } - }, - "npm-install-checks": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.0.0.tgz", - "integrity": "sha512-SBU9oFglRVZnfElwAtF14NivyulDqF1VKqqwNsFW9HDcbHMAPHpRSsVFgKuwFGq/hVvWZExz62Th0kvxn/XE7Q==", - "devOptional": true, - "requires": { - "semver": "^7.1.1" - } - }, - "npm-normalize-package-bin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", - "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", - "devOptional": true - }, - "npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "devOptional": true, - "requires": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - } - }, - "npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", - "devOptional": true, - "requires": { - "ignore-walk": "^6.0.0" - } - }, - "npm-pick-manifest": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", - "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", - "devOptional": true, - "requires": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^10.0.0", - "semver": "^7.3.5" - } - }, - "npm-registry-fetch": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", - "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", - "devOptional": true, - "requires": { - "make-fetch-happen": "^11.0.0", - "minipass": "^4.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", - "devOptional": true - }, - "make-fetch-happen": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.2.tgz", - "integrity": "sha512-5n/Pq41w/uZghpdlXAY5kIM85RgJThtTH/NYBRAZ9VUOBWV90USaQjwGrw76fZP3Lj5hl/VZjpVvOaRBMoL/2w==", - "devOptional": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - } - }, - "minipass-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", - "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", - "devOptional": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^4.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - } - } - }, - "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==", - "devOptional": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "devOptional": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, - "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, - "requires": { - "boolbase": "^1.0.0" - } - }, - "nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "devOptional": true - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "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, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "devOptional": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "devOptional": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "devOptional": true, - "requires": { - "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" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "devOptional": true - }, - "ospath": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "optional": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - } - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "devOptional": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dev": true, - "requires": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "dependencies": { - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - } - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "15.0.8", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.0.8.tgz", - "integrity": "sha512-UlcumB/XS6xyyIMwg/WwMAyUmga+RivB5KgkRwA1hZNtrx+0Bt41KxHCvg1kr0pZ/ZeD8qjhW4fph6VaYRCbLw==", - "devOptional": true, - "requires": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^4.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "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, - "requires": { - "parse5": "^6.0.1" - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "devOptional": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "devOptional": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "devOptional": true - }, - "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 - }, - "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 - }, - "pdfjs-dist": { - "version": "2.14.305", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.14.305.tgz", - "integrity": "sha512-5f7i25J1dKIBczhgfxEgNxfYNIxXEdxqo6Qb4ehY7Ja+p6AI4uUmk/OcVGXfRGm2ys5iaJJhJUwBFwv6Jl/Qww==", - "requires": { - "dommatrix": "^1.0.1", - "web-streams-polyfill": "^3.2.1" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "optional": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "optional": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "optional": true - }, - "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true - }, - "piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "dev": true, - "requires": { - "eventemitter-asyncresource": "^1.0.0", - "hdr-histogram-js": "^2.0.1", - "hdr-histogram-percentiles-obj": "^3.0.0", - "nice-napi": "^1.0.2" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-loader": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.2.tgz", - "integrity": "sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.8" - } - }, - "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, - "requires": {} - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "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, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "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, - "requires": { - "icss-utils": "^5.0.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "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 - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "devOptional": true - }, - "pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "requires": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "devOptional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "devOptional": true - }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "devOptional": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "dependencies": { - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - } - } - }, - "proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "optional": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "devOptional": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "optional": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz", - "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==", - "devOptional": true - }, - "qs": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", - "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", - "optional": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - } - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "read-package-json": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.0.tgz", - "integrity": "sha512-b/9jxWJ8EwogJPpv99ma+QwtqB7FSl3+V6UXS7Aaay8/5VwMY50oIFooY1UKXMWpfNCM6T/PoGqa5GD1g9xf9w==", - "devOptional": true, - "requires": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "dependencies": { - "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "devOptional": true - } - } - }, - "read-package-json-fast": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", - "devOptional": true, - "requires": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "dependencies": { - "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "devOptional": true - } - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "devOptional": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "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 - }, - "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, - "requires": { - "regenerate": "^1.4.2" - } - }, - "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 - }, - "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, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - } - }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "optional": true, - "requires": { - "throttleit": "^1.0.0" - } - }, - "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==" - }, - "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==", - "devOptional": true - }, - "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 - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "devOptional": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, - "requires": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.14", - "source-map": "0.6.1" - }, - "dependencies": { - "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, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "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 - } - } - }, - "resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "devOptional": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "devOptional": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "optional": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "devOptional": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "devOptional": true, - "requires": { - "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" - } - } - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "devOptional": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "requires": { - "tslib": "^2.1.0" - } - }, - "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==", - "devOptional": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "devOptional": true - }, - "sass": { - "version": "1.57.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz", - "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "sass-loader": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.2.0.tgz", - "integrity": "sha512-JWEp48djQA4nbZxmgC02/Wh0eroSUutulROUusYJO9P9zltRbNN80JCBHqRGzjd4cmZCa/r88xgfkjGD0TXsHg==", - "dev": true, - "requires": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - }, - "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 - }, - "selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "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 - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "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 - } - } - }, - "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, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "devOptional": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "devOptional": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "devOptional": true - }, - "shell-quote": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", - "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "devOptional": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "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==", - "devOptional": true - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "optional": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true - } - } - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "devOptional": true - }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - }, - "dependencies": { - "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 - } - } - }, - "socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "devOptional": true, - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "devOptional": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "devOptional": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-loader": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", - "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", - "dev": true, - "requires": { - "abab": "^2.0.6", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "optional": true - }, - "spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "devOptional": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "devOptional": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "devOptional": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "devOptional": true - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "optional": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", - "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", - "devOptional": true, - "requires": { - "minipass": "^4.0.0" - } - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "devOptional": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "devOptional": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "devOptional": true - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "devOptional": true - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.1.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", - "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", - "devOptional": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^4.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "dependencies": { - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "devOptional": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "devOptional": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true - } - } - }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, - "terser": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", - "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.14", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-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, - "requires": {} - }, - "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 - }, - "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, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - } - } - }, - "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 - }, - "throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", - "optional": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "devOptional": true - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "devOptional": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "ts-jest": { - "version": "28.0.8", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.8.tgz", - "integrity": "sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^28.0.0", - "json5": "^2.2.1", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - } - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - } - }, - "tsconfig-paths": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz", - "integrity": "sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw==", - "dev": true, - "requires": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - } - } - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "optional": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "optional": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "devOptional": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==" - }, - "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 - }, - "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, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "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 - }, - "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 - }, - "unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "devOptional": true, - "requires": { - "unique-slug": "^4.0.0" - } - }, - "unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "devOptional": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "optional": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "optional": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "devOptional": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "devOptional": true - }, - "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 - }, - "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "v8-to-istanbul": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", - "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - } - }, - "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==", - "devOptional": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "devOptional": true, - "requires": { - "builtins": "^5.0.0" - } - }, - "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 - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "requires": { - "xml-name-validator": "^4.0.0" - } - }, - "wait-on": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", - "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", - "dev": true, - "requires": { - "axios": "^0.25.0", - "joi": "^17.6.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^7.5.4" - } - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "devOptional": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - }, - "webpack": { - "version": "5.75.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", - "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-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.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-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, - "requires": {} - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-dev-middleware": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.0.1.tgz", - "integrity": "sha512-PZPZ6jFinmqVPJZbisfggDiC+2EeGZ1ZByyMP5sOFJcPPWSexalISz+cvm+j+oYPT7FIJyxT76esjnw9DhE5sw==", - "dev": true, - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.12", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - } - }, - "webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", - "dev": true, - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/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", - "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.4.2" - }, - "dependencies": { - "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, - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - } - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "requires": { - "typed-assert": "^1.0.8" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "requires": { - "iconv-lite": "0.6.3" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true - }, - "whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "devOptional": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, - "requires": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - } - }, - "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - } - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "devOptional": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "ws": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", - "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", - "dev": true, - "requires": {} - }, - "xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "optional": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "zone.js": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", - "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", - "requires": { - "tslib": "^2.3.0" - } - } } } diff --git a/src-ui/package.json b/src-ui/package.json index fa9544add..c12a93394 100644 --- a/src-ui/package.json +++ b/src-ui/package.json @@ -13,14 +13,14 @@ }, "private": true, "dependencies": { - "@angular/common": "~15.1.0", - "@angular/compiler": "~15.1.0", - "@angular/core": "~15.1.0", - "@angular/forms": "~15.1.0", - "@angular/localize": "~15.1.0", - "@angular/platform-browser": "~15.1.0", - "@angular/platform-browser-dynamic": "~15.1.0", - "@angular/router": "~15.1.0", + "@angular/common": "~15.1.2", + "@angular/compiler": "~15.1.2", + "@angular/core": "~15.1.2", + "@angular/forms": "~15.1.2", + "@angular/localize": "~15.1.2", + "@angular/platform-browser": "~15.1.2", + "@angular/platform-browser-dynamic": "~15.1.2", + "@angular/router": "~15.1.2", "@ng-bootstrap/ng-bootstrap": "^14.0.1", "@ng-select/ng-select": "^10.0.1", "@ngneat/dirty-check-forms": "^3.0.3", @@ -39,14 +39,14 @@ }, "devDependencies": { "@angular-builders/jest": "15.0.0", - "@angular-devkit/build-angular": "~15.1.0", - "@angular-eslint/builder": "15.1.0", - "@angular-eslint/eslint-plugin": "15.1.0", - "@angular-eslint/eslint-plugin-template": "15.1.0", - "@angular-eslint/schematics": "15.1.0", - "@angular-eslint/template-parser": "15.1.0", - "@angular/cli": "~15.1.0", - "@angular/compiler-cli": "~15.1.0", + "@angular-devkit/build-angular": "~15.1.4", + "@angular-eslint/builder": "15.2.0", + "@angular-eslint/eslint-plugin": "15.2.0", + "@angular-eslint/eslint-plugin-template": "15.2.0", + "@angular-eslint/schematics": "15.2.0", + "@angular-eslint/template-parser": "15.2.0", + "@angular/cli": "~15.1.4", + "@angular/compiler-cli": "~15.1.2", "@types/jest": "28.1.6", "@types/node": "^18.7.23", "@typescript-eslint/eslint-plugin": "^5.43.0", From 06e2500443b5f00553a204856a2207552c56e4c9 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Wed, 1 Feb 2023 07:23:04 -0800 Subject: [PATCH 23/32] Moves the mktime call into the if block where it is used, preventing exceptions during rare cases --- src/documents/management/commands/document_exporter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/documents/management/commands/document_exporter.py b/src/documents/management/commands/document_exporter.py index 8e8a4978c..fdea8aff6 100644 --- a/src/documents/management/commands/document_exporter.py +++ b/src/documents/management/commands/document_exporter.py @@ -311,8 +311,8 @@ class Command(BaseCommand): archive_target = None # 3.4. write files to target folder - t = int(time.mktime(document.created.timetuple())) if document.storage_type == Document.STORAGE_TYPE_GPG: + t = int(time.mktime(document.created.timetuple())) original_target.parent.mkdir(parents=True, exist_ok=True) with document.source_file as out_file: From 54e1c175393766397d52537a77b585f116915e8a Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Mon, 30 Jan 2023 10:05:50 -0800 Subject: [PATCH 24/32] Link to the the compiled frontend instead of copying it during collectstatic --- Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index c0c9b9251..44cdf4a4f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ # syntax=docker/dockerfile:1.4 +# https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/reference.md FROM --platform=$BUILDPLATFORM node:16-bullseye-slim AS compile-frontend @@ -133,7 +134,6 @@ WORKDIR /usr/src/paperless/ COPY gunicorn.conf.py . # setup docker-specific things -# Use mounts to avoid copying installer files into the image # These change sometimes, but rarely WORKDIR /usr/src/paperless/src/docker/ @@ -175,7 +175,6 @@ RUN set -eux \ && ./install_management_commands.sh # Install the built packages from the installer library images -# Use mounts to avoid copying installer files into the image # These change sometimes RUN set -eux \ && echo "Getting binaries" \ @@ -243,11 +242,12 @@ COPY ./src ./ COPY --from=compile-frontend /src/src/documents/static/frontend/ ./documents/static/frontend/ # add users, setup scripts +# Mount the compiled frontend to expected location RUN set -eux \ && addgroup --gid 1000 paperless \ && useradd --uid 1000 --gid paperless --home-dir /usr/src/paperless paperless \ - && chown -R paperless:paperless ../ \ - && gosu paperless python3 manage.py collectstatic --clear --no-input \ + && chown -R paperless:paperless /usr/src/paperless \ + && gosu paperless python3 manage.py collectstatic --clear --no-input --link \ && gosu paperless python3 manage.py compilemessages VOLUME ["/usr/src/paperless/data", \ From 9b3ec22beb1971b38d12c4c7c664e6f1c08b1602 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Mon, 30 Jan 2023 10:06:21 -0800 Subject: [PATCH 25/32] Don't forget to remove the zipped binaries file after install --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 44cdf4a4f..95cd9d95f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -198,7 +198,8 @@ RUN set -eux \ && python3 -m pip list \ && echo "Cleaning up image layer" \ && cd ../ \ - && rm -rf paperless-ngx + && rm -rf paperless-ngx \ + && rm paperless-ngx.tar.gz WORKDIR /usr/src/paperless/src/ From 8fea4c00ada126f9e03279915a872eb150f02159 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Mon, 30 Jan 2023 10:07:02 -0800 Subject: [PATCH 26/32] Improves and clarifies the release distribution steps. No changes to static copying --- .github/workflows/ci.yml | 48 +++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ddb83425b..38565d84b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -429,20 +429,46 @@ jobs: - name: Move files run: | - mkdir dist - mkdir dist/paperless-ngx - mkdir dist/paperless-ngx/scripts - cp .dockerignore .env Dockerfile Pipfile Pipfile.lock requirements.txt LICENSE README.md dist/paperless-ngx/ - cp paperless.conf.example dist/paperless-ngx/paperless.conf - cp gunicorn.conf.py dist/paperless-ngx/gunicorn.conf.py - cp -r docker/ dist/paperless-ngx/docker - cp scripts/*.service scripts/*.sh scripts/*.socket dist/paperless-ngx/scripts/ - cp -r src/ dist/paperless-ngx/src - cp -r docs/_build/html/ dist/paperless-ngx/docs - mv static dist/paperless-ngx + echo "Making dist folders" + for directory in dist \ + dist/paperless-ngx \ + dist/paperless-ngx/scripts; + do + mkdir --verbose --parents ${directory} + done + + echo "Copying basic files" + for file_name in .dockerignore \ + .env \ + Dockerfile \ + Pipfile \ + Pipfile.lock \ + requirements.txt \ + LICENSE \ + README.md \ + paperless.conf.example \ + gunicorn.conf.py + do + cp --verbose ${file_name} dist/paperless-ngx/ + done + mv --verbose dist/paperless-ngx/paperless.conf.example paperless.conf + + echo "Copying Docker related files" + cp --recursive docker/ dist/paperless-ngx/docker + + echo "Copying startup scripts" + cp --verbose scripts/*.service scripts/*.sh scripts/*.socket dist/paperless-ngx/scripts/ + + echo "Copying source files" + cp --recursive src/ dist/paperless-ngx/src + echo "Copying documentation" + cp --recursive docs/_build/html/ dist/paperless-ngx/docs + + mv --verbose static dist/paperless-ngx - name: Make release package run: | + echo "Creating release archive" cd dist tar -cJf paperless-ngx.tar.xz paperless-ngx/ - From 5978650ec60704389074bff099999155f470614a Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Tue, 31 Jan 2023 11:04:02 -0800 Subject: [PATCH 27/32] Note that changing STATIC_ROOT may require running collectstatic again --- docs/configuration.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 73bb7f9bb..1a7c8bfe9 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -141,7 +141,8 @@ directory. files created using "collectstatic" manager command are stored. Unless you're doing something fancy, there is no need to override - this. + this. If this is changed, you may need to run + `collectstatic` again. Defaults to "../static/", relative to the "src" directory. From a203b006e71dcfad9a99a696069cd10e62e8a00e Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Tue, 31 Jan 2023 14:13:09 -0800 Subject: [PATCH 28/32] Adjust permissions of the final dist package to the normal first user of a system, instead of runner:docker --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 38565d84b..74229ef60 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -470,6 +470,7 @@ jobs: run: | echo "Creating release archive" cd dist + sudo chown -R 1000:1000 paperless-ngx/ tar -cJf paperless-ngx.tar.xz paperless-ngx/ - name: Upload release artifact From 0f536a9b9a20d15cbb0a4e6d23289935db6d231e Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Thu, 2 Feb 2023 08:19:59 -0800 Subject: [PATCH 29/32] Detect and reset invalid ASNs to 0 during indexing with a loud error to the user --- src/documents/consumer.py | 9 +++-- src/documents/index.py | 16 +++++++-- src/documents/models.py | 8 +++-- src/documents/tests/test_index.py | 59 +++++++++++++++++++++++++++++++ 4 files changed, 86 insertions(+), 6 deletions(-) diff --git a/src/documents/consumer.py b/src/documents/consumer.py index 8c80304d3..1896415b1 100644 --- a/src/documents/consumer.py +++ b/src/documents/consumer.py @@ -146,11 +146,16 @@ class Consumer(LoggingMixin): return # Validate the range is above zero and less than uint32_t max # otherwise, Whoosh can't handle it in the index - if self.override_asn < 0 or self.override_asn > 0xFF_FF_FF_FF: + if ( + self.override_asn < Document.ARCHIVE_SERIAL_NUMBER_MIN + or self.override_asn > Document.ARCHIVE_SERIAL_NUMBER_MAX + ): self._fail( MESSAGE_ASN_RANGE, f"Not consuming {self.filename}: " - f"Given ASN {self.override_asn} is out of range [0, 4,294,967,295]", + f"Given ASN {self.override_asn} is out of range " + f"[{Document.ARCHIVE_SERIAL_NUMBER_MIN:,}, " + f"{Document.ARCHIVE_SERIAL_NUMBER_MAX:,}]", ) if Document.objects.filter(archive_serial_number=self.override_asn).exists(): self._fail( diff --git a/src/documents/index.py b/src/documents/index.py index 575e57e8b..e11708f45 100644 --- a/src/documents/index.py +++ b/src/documents/index.py @@ -90,10 +90,22 @@ def open_index_searcher(): searcher.close() -def update_document(writer, doc): +def update_document(writer: AsyncWriter, doc: Document): tags = ",".join([t.name for t in doc.tags.all()]) tags_ids = ",".join([str(t.id) for t in doc.tags.all()]) comments = ",".join([str(c.comment) for c in Comment.objects.filter(document=doc)]) + asn = doc.archive_serial_number + if asn is not None and ( + asn < Document.ARCHIVE_SERIAL_NUMBER_MIN + or asn > Document.ARCHIVE_SERIAL_NUMBER_MAX + ): + logger.error( + f"Not indexing Archive Serial Number {asn} of document {doc.pk}. " + f"ASN is out of range " + f"[{Document.ARCHIVE_SERIAL_NUMBER_MIN:,}, " + f"{Document.ARCHIVE_SERIAL_NUMBER_MAX:,}.", + ) + asn = 0 writer.update_document( id=doc.pk, title=doc.title, @@ -109,7 +121,7 @@ def update_document(writer, doc): has_type=doc.document_type is not None, created=doc.created, added=doc.added, - asn=doc.archive_serial_number, + asn=asn, modified=doc.modified, path=doc.storage_path.name if doc.storage_path else None, path_id=doc.storage_path.id if doc.storage_path else None, diff --git a/src/documents/models.py b/src/documents/models.py index 84e96a79a..a3c7cc4e6 100644 --- a/src/documents/models.py +++ b/src/documents/models.py @@ -3,6 +3,7 @@ import logging import os import re from collections import OrderedDict +from typing import Final from typing import Optional import dateutil.parser @@ -229,6 +230,9 @@ class Document(models.Model): help_text=_("The original name of the file when it was uploaded"), ) + ARCHIVE_SERIAL_NUMBER_MIN: Final[int] = 0 + ARCHIVE_SERIAL_NUMBER_MAX: Final[int] = 0xFF_FF_FF_FF + archive_serial_number = models.PositiveIntegerField( _("archive serial number"), blank=True, @@ -236,8 +240,8 @@ class Document(models.Model): unique=True, db_index=True, validators=[ - MaxValueValidator(0xFF_FF_FF_FF), - MinValueValidator(0), + MaxValueValidator(ARCHIVE_SERIAL_NUMBER_MAX), + MinValueValidator(ARCHIVE_SERIAL_NUMBER_MIN), ], help_text=_( "The position of this document in your physical document " "archive.", diff --git a/src/documents/tests/test_index.py b/src/documents/tests/test_index.py index 696648427..bf1865a43 100644 --- a/src/documents/tests/test_index.py +++ b/src/documents/tests/test_index.py @@ -1,3 +1,5 @@ +from unittest import mock + from django.test import TestCase from documents import index from documents.models import Document @@ -31,3 +33,60 @@ class TestAutoComplete(DirectoriesMixin, TestCase): ) self.assertListEqual(index.autocomplete(ix, "tes", limit=1), [b"test3"]) self.assertListEqual(index.autocomplete(ix, "tes", limit=0), []) + + def test_archive_serial_number_ranging(self): + """ + GIVEN: + - Document with an archive serial number above schema allowed size + WHEN: + - Document is provided to the index + THEN: + - Error is logged + - Document ASN is reset to 0 for the index + """ + doc1 = Document.objects.create( + title="doc1", + checksum="A", + content="test test2 test3", + # yes, this is allowed, unless full_clean is run + # DRF does call the validators, this test won't + archive_serial_number=Document.ARCHIVE_SERIAL_NUMBER_MAX + 1, + ) + with self.assertLogs("paperless.index", level="ERROR") as cm: + with mock.patch( + "documents.index.AsyncWriter.update_document", + ) as mocked_update_doc: + index.add_or_update_document(doc1) + + mocked_update_doc.assert_called_once() + _, kwargs = mocked_update_doc.call_args + + self.assertEqual(kwargs["asn"], 0) + + error_str = cm.output[0] + expected_str = "ERROR:paperless.index:Not indexing Archive Serial Number 4294967296 of document 1" + self.assertIn(expected_str, error_str) + + def test_archive_serial_number_is_none(self): + """ + GIVEN: + - Document with no archive serial number + WHEN: + - Document is provided to the index + THEN: + - ASN isn't touched + """ + doc1 = Document.objects.create( + title="doc1", + checksum="A", + content="test test2 test3", + ) + with mock.patch( + "documents.index.AsyncWriter.update_document", + ) as mocked_update_doc: + index.add_or_update_document(doc1) + + mocked_update_doc.assert_called_once() + _, kwargs = mocked_update_doc.call_args + + self.assertIsNone(kwargs["asn"]) From faecd594321bf6bd65f360756c83768233ffa0dc Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Thu, 2 Feb 2023 08:20:20 -0800 Subject: [PATCH 30/32] Increment the index version for Docker users --- docker/docker-prepare.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/docker-prepare.sh b/docker/docker-prepare.sh index af2bfe2a7..b088cef40 100755 --- a/docker/docker-prepare.sh +++ b/docker/docker-prepare.sh @@ -80,7 +80,7 @@ django_checks() { search_index() { - local -r index_version=2 + local -r index_version=3 local -r index_version_file=${DATA_DIR}/.index_version if [[ (! -f "${index_version_file}") || $(<"${index_version_file}") != "$index_version" ]]; then From ac611acaa192d31d4b886ce0f440ce12cfa029aa Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Fri, 3 Feb 2023 13:49:46 -0800 Subject: [PATCH 31/32] Correct PaperlessTask model field verbose name Closes #2597 --- src/documents/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/documents/models.py b/src/documents/models.py index a3c7cc4e6..31b086992 100644 --- a/src/documents/models.py +++ b/src/documents/models.py @@ -559,7 +559,7 @@ class PaperlessTask(models.Model): task_file_name = models.CharField( null=True, max_length=255, - verbose_name=_("Task Name"), + verbose_name=_("Task Filename"), help_text=_("Name of the file which the Task was run for"), ) From 8154c7b53a2305e7e9424ec722bc01f0eace9d01 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Fri, 3 Feb 2023 13:54:39 -0800 Subject: [PATCH 32/32] Migration required for rename of PaperlessTask field --- ...1030_alter_paperlesstask_task_file_name.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/documents/migrations/1030_alter_paperlesstask_task_file_name.py diff --git a/src/documents/migrations/1030_alter_paperlesstask_task_file_name.py b/src/documents/migrations/1030_alter_paperlesstask_task_file_name.py new file mode 100644 index 000000000..130358bec --- /dev/null +++ b/src/documents/migrations/1030_alter_paperlesstask_task_file_name.py @@ -0,0 +1,23 @@ +# Generated by Django 4.1.5 on 2023-02-03 21:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("documents", "1029_alter_document_archive_serial_number"), + ] + + operations = [ + migrations.AlterField( + model_name="paperlesstask", + name="task_file_name", + field=models.CharField( + help_text="Name of the file which the Task was run for", + max_length=255, + null=True, + verbose_name="Task Filename", + ), + ), + ]