From fbc602cd4dede581ba7abd1cfbe024dd2a9c13c0 Mon Sep 17 00:00:00 2001 From: danuw Date: Thu, 3 Aug 2023 14:42:38 +0000 Subject: [PATCH 1/4] doc initial set up using classic template and typescript - doc is currently copied into casdk-docs/docs to get live updates (copied and not moved so changes in main can be easily identified when rebasing once it all works) --- casdk-docs/.gitignore | 20 + casdk-docs/README.md | 41 + casdk-docs/babel.config.js | 3 + .../docusaurus-plushie-banner.jpeg | Bin 0 -> 96122 bytes casdk-docs/blog/2021-08-26-welcome/index.md | 15 + casdk-docs/blog/2023-08-01-mdx-blog-post.mdx | 19 + casdk-docs/docs/architecture/_category_.json | 7 + .../architecture/c-sharp-client-library.md | 211 + casdk-docs/docs/architecture/data-sources.md | 187 + .../decisions/0000-ladr-template.md | 55 + .../0001-record-architecture-decisions.md | 26 + .../decisions/0002-dev-containers.md | 44 + .../0003-command-line-params-to-config.md | 54 + .../decisions/0004-documentation.md | 120 + ...cEnumerable-HttpResponseExceptionFilter.md | 45 + .../0006-data-source-registration.md | 102 + .../decisions/0007-data-source-interfaces.md | 148 + .../0008-data-source-configuration.md | 109 + .../0009-sdk-as-a-csharp-client-library.md | 90 + .../decisions/0010-sdk-packaging.md | 76 + .../decisions/0011-cd-pipeline.md | 59 + .../decisions/0012-electricity-maps-free.md | 65 + .../decisions/0013-remove-aggregator-layer.md | 34 + .../0014-dynamic-datasource-registration.md | 106 + .../decisions/0015-cli-output-csv.md | 143 + casdk-docs/docs/architecture/overview.md | 107 + casdk-docs/docs/carbon-aware-cli.md | 538 + casdk-docs/docs/carbon-aware-github-action.md | 10 + casdk-docs/docs/carbon-aware-library.md | 493 + casdk-docs/docs/carbon-aware-tools.md | 79 + casdk-docs/docs/carbon-aware-webapi.md | 573 + casdk-docs/docs/configuration.md | 616 + casdk-docs/docs/containerization.md | 144 + .../docs/images/emissions-forecast-csv.png | Bin 0 -> 121628 bytes .../docs/images/overview-tiers-swimlanes.png | Bin 0 -> 68197 bytes .../docs/images/revised-end-end-tiers.png | Bin 0 -> 58287 bytes .../docs/images/single-trunk-branch.svg | 3 + .../docs/images/tiers-architecture.drawio.png | Bin 0 -> 71192 bytes .../images/web-api-error-handling-flow.png | Bin 0 -> 82718 bytes casdk-docs/docs/images/webapi-swimlanes.png | Bin 0 -> 84607 bytes casdk-docs/docs/intro.md | 47 + casdk-docs/docs/linting copy.md | 65 + casdk-docs/docs/linting.md | 65 + casdk-docs/docs/overview.md | 225 + casdk-docs/docs/packaging.md | 209 + casdk-docs/docs/quickstart.md | 444 + casdk-docs/docs/selecting-a-data-source.md | 91 + .../docs/tutorial-basics/_category_.json | 8 + .../docs/tutorial-basics/congratulations.md | 23 + .../tutorial-basics/create-a-blog-post.md | 34 + .../docs/tutorial-basics/create-a-document.md | 57 + .../docs/tutorial-basics/create-a-page.md | 43 + .../docs/tutorial-basics/deploy-your-site.md | 31 + .../tutorial-basics/markdown-features.mdx | 150 + .../docs/tutorial-extras/_category_.json | 7 + .../img/docsVersionDropdown.png | Bin 0 -> 25427 bytes .../tutorial-extras/img/localeDropdown.png | Bin 0 -> 27841 bytes .../tutorial-extras/manage-docs-versions.md | 55 + .../tutorial-extras/translate-your-site.md | 88 + casdk-docs/docusaurus.config.js | 135 + casdk-docs/package-lock.json | 12657 ++++++++++++++++ casdk-docs/package.json | 46 + casdk-docs/sidebars.js | 33 + .../src/components/HomepageFeatures/index.tsx | 81 + .../HomepageFeatures/styles.module.css | 11 + casdk-docs/src/css/custom.css | 30 + casdk-docs/src/pages/index.module.css | 23 + casdk-docs/src/pages/index.tsx | 41 + casdk-docs/src/pages/markdown-page.md | 7 + casdk-docs/static/.nojekyll | 0 casdk-docs/static/img/GSF-logo.jpg | Bin 0 -> 3643 bytes .../static/img/docusaurus-social-card.jpg | Bin 0 -> 55746 bytes casdk-docs/static/img/docusaurus.png | Bin 0 -> 5142 bytes casdk-docs/static/img/favicon.ico | Bin 0 -> 3626 bytes casdk-docs/static/img/logo.svg | 1 + .../static/img/undraw_docusaurus_mountain.svg | 171 + .../static/img/undraw_docusaurus_react.svg | 170 + .../static/img/undraw_docusaurus_tree.svg | 40 + casdk-docs/tsconfig.json | 7 + docs/architecture/_category_.json | 7 + 80 files changed, 19444 insertions(+) create mode 100644 casdk-docs/.gitignore create mode 100644 casdk-docs/README.md create mode 100644 casdk-docs/babel.config.js create mode 100644 casdk-docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg create mode 100644 casdk-docs/blog/2021-08-26-welcome/index.md create mode 100644 casdk-docs/blog/2023-08-01-mdx-blog-post.mdx create mode 100644 casdk-docs/docs/architecture/_category_.json create mode 100644 casdk-docs/docs/architecture/c-sharp-client-library.md create mode 100644 casdk-docs/docs/architecture/data-sources.md create mode 100644 casdk-docs/docs/architecture/decisions/0000-ladr-template.md create mode 100644 casdk-docs/docs/architecture/decisions/0001-record-architecture-decisions.md create mode 100644 casdk-docs/docs/architecture/decisions/0002-dev-containers.md create mode 100644 casdk-docs/docs/architecture/decisions/0003-command-line-params-to-config.md create mode 100644 casdk-docs/docs/architecture/decisions/0004-documentation.md create mode 100644 casdk-docs/docs/architecture/decisions/0005-IAsyncEnumerable-HttpResponseExceptionFilter.md create mode 100644 casdk-docs/docs/architecture/decisions/0006-data-source-registration.md create mode 100644 casdk-docs/docs/architecture/decisions/0007-data-source-interfaces.md create mode 100644 casdk-docs/docs/architecture/decisions/0008-data-source-configuration.md create mode 100644 casdk-docs/docs/architecture/decisions/0009-sdk-as-a-csharp-client-library.md create mode 100644 casdk-docs/docs/architecture/decisions/0010-sdk-packaging.md create mode 100644 casdk-docs/docs/architecture/decisions/0011-cd-pipeline.md create mode 100644 casdk-docs/docs/architecture/decisions/0012-electricity-maps-free.md create mode 100644 casdk-docs/docs/architecture/decisions/0013-remove-aggregator-layer.md create mode 100644 casdk-docs/docs/architecture/decisions/0014-dynamic-datasource-registration.md create mode 100644 casdk-docs/docs/architecture/decisions/0015-cli-output-csv.md create mode 100644 casdk-docs/docs/architecture/overview.md create mode 100644 casdk-docs/docs/carbon-aware-cli.md create mode 100644 casdk-docs/docs/carbon-aware-github-action.md create mode 100644 casdk-docs/docs/carbon-aware-library.md create mode 100644 casdk-docs/docs/carbon-aware-tools.md create mode 100644 casdk-docs/docs/carbon-aware-webapi.md create mode 100644 casdk-docs/docs/configuration.md create mode 100644 casdk-docs/docs/containerization.md create mode 100644 casdk-docs/docs/images/emissions-forecast-csv.png create mode 100644 casdk-docs/docs/images/overview-tiers-swimlanes.png create mode 100644 casdk-docs/docs/images/revised-end-end-tiers.png create mode 100644 casdk-docs/docs/images/single-trunk-branch.svg create mode 100644 casdk-docs/docs/images/tiers-architecture.drawio.png create mode 100644 casdk-docs/docs/images/web-api-error-handling-flow.png create mode 100644 casdk-docs/docs/images/webapi-swimlanes.png create mode 100644 casdk-docs/docs/intro.md create mode 100644 casdk-docs/docs/linting copy.md create mode 100644 casdk-docs/docs/linting.md create mode 100644 casdk-docs/docs/overview.md create mode 100644 casdk-docs/docs/packaging.md create mode 100644 casdk-docs/docs/quickstart.md create mode 100644 casdk-docs/docs/selecting-a-data-source.md create mode 100644 casdk-docs/docs/tutorial-basics/_category_.json create mode 100644 casdk-docs/docs/tutorial-basics/congratulations.md create mode 100644 casdk-docs/docs/tutorial-basics/create-a-blog-post.md create mode 100644 casdk-docs/docs/tutorial-basics/create-a-document.md create mode 100644 casdk-docs/docs/tutorial-basics/create-a-page.md create mode 100644 casdk-docs/docs/tutorial-basics/deploy-your-site.md create mode 100644 casdk-docs/docs/tutorial-basics/markdown-features.mdx create mode 100644 casdk-docs/docs/tutorial-extras/_category_.json create mode 100644 casdk-docs/docs/tutorial-extras/img/docsVersionDropdown.png create mode 100644 casdk-docs/docs/tutorial-extras/img/localeDropdown.png create mode 100644 casdk-docs/docs/tutorial-extras/manage-docs-versions.md create mode 100644 casdk-docs/docs/tutorial-extras/translate-your-site.md create mode 100644 casdk-docs/docusaurus.config.js create mode 100644 casdk-docs/package-lock.json create mode 100644 casdk-docs/package.json create mode 100644 casdk-docs/sidebars.js create mode 100644 casdk-docs/src/components/HomepageFeatures/index.tsx create mode 100644 casdk-docs/src/components/HomepageFeatures/styles.module.css create mode 100644 casdk-docs/src/css/custom.css create mode 100644 casdk-docs/src/pages/index.module.css create mode 100644 casdk-docs/src/pages/index.tsx create mode 100644 casdk-docs/src/pages/markdown-page.md create mode 100644 casdk-docs/static/.nojekyll create mode 100644 casdk-docs/static/img/GSF-logo.jpg create mode 100644 casdk-docs/static/img/docusaurus-social-card.jpg create mode 100644 casdk-docs/static/img/docusaurus.png create mode 100644 casdk-docs/static/img/favicon.ico create mode 100644 casdk-docs/static/img/logo.svg create mode 100644 casdk-docs/static/img/undraw_docusaurus_mountain.svg create mode 100644 casdk-docs/static/img/undraw_docusaurus_react.svg create mode 100644 casdk-docs/static/img/undraw_docusaurus_tree.svg create mode 100644 casdk-docs/tsconfig.json create mode 100644 docs/architecture/_category_.json diff --git a/casdk-docs/.gitignore b/casdk-docs/.gitignore new file mode 100644 index 000000000..b2d6de306 --- /dev/null +++ b/casdk-docs/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/casdk-docs/README.md b/casdk-docs/README.md new file mode 100644 index 000000000..aaba2fa1e --- /dev/null +++ b/casdk-docs/README.md @@ -0,0 +1,41 @@ +# Website + +This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. + +### Installation + +``` +$ yarn +``` + +### Local Development + +``` +$ yarn start +``` + +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. + +### Build + +``` +$ yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +### Deployment + +Using SSH: + +``` +$ USE_SSH=true yarn deploy +``` + +Not using SSH: + +``` +$ GIT_USER= yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/casdk-docs/babel.config.js b/casdk-docs/babel.config.js new file mode 100644 index 000000000..e00595dae --- /dev/null +++ b/casdk-docs/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/casdk-docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg b/casdk-docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..11bda0928456b12f8e53d0ba5709212a4058d449 GIT binary patch literal 96122 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 literal 0 HcmV?d00001 diff --git a/casdk-docs/blog/2021-08-26-welcome/index.md b/casdk-docs/blog/2021-08-26-welcome/index.md new file mode 100644 index 000000000..1f7f7a658 --- /dev/null +++ b/casdk-docs/blog/2021-08-26-welcome/index.md @@ -0,0 +1,15 @@ +--- +slug: welcome +title: Welcome +tags: [facebook, hello, docusaurus] +--- + +Welcome to our documentation site! + +A blog post folder can be convenient to co-locate blog post images: + +![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) + +The blog supports tags as well! + +**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config. diff --git a/casdk-docs/blog/2023-08-01-mdx-blog-post.mdx b/casdk-docs/blog/2023-08-01-mdx-blog-post.mdx new file mode 100644 index 000000000..f5e5f3473 --- /dev/null +++ b/casdk-docs/blog/2023-08-01-mdx-blog-post.mdx @@ -0,0 +1,19 @@ +--- +slug: release-v1.1 +title: Release v1.1 +tags: [v1.1, release] +--- + +Release 1.1 + +:::tip + +Use the power of React to create interactive blog posts. + +```js + +``` + + + +::: diff --git a/casdk-docs/docs/architecture/_category_.json b/casdk-docs/docs/architecture/_category_.json new file mode 100644 index 000000000..b6440021e --- /dev/null +++ b/casdk-docs/docs/architecture/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "Architecture", + "position": 3, + "link": { + "type": "generated-index" + } +} diff --git a/casdk-docs/docs/architecture/c-sharp-client-library.md b/casdk-docs/docs/architecture/c-sharp-client-library.md new file mode 100644 index 000000000..3b3376367 --- /dev/null +++ b/casdk-docs/docs/architecture/c-sharp-client-library.md @@ -0,0 +1,211 @@ +# C\# Client Library + +This document outlines the designs behind the GSF Carbon Aware C# Client +Library. + +## Namespace + +Given the fact this is going to be a library exposing functionality to +consumers, will use the +[standard](https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/names-of-namespaces) +namespace naming schema: +`.(|)[.][.]`. For GSF +CarbonAware SDK this the following schema: + +- **Company**: **_GSF_** +- **Product**: **_CarbonAware_** +- **Feature**: **_Models_**, **_Handlers_**, ... + +An example of a namespace would be: `namespace GSF.CarbonAware.Models` and a +class (record, interface, ...) that belongs to that namespace would be: + +```c# +namespace GSF.CarbonAware.Models; + +public record EmissionsData +{ + .... +} +``` + +The following namespaces are included: + +| namespace | +| ----------------------------- | +| GSF.CarbonAware.Exceptions | +| GSF.CarbonAware.Configuration | +| GSF.CarbonAware.Handlers | +| GSF.CarbonAware.Models | +| GSF.CarbonAware.Parameters | + +## Features + +### Models + +There are two main classes that represents the data fetched from the data +sources (i.e `Static Json`, [WattTime](https://www.watttime.org), +[ElectricityMaps](https://www.electricitymaps.com), and +[ElectricityMapsFree](https://www.co2signal.com/)): + +- `EmissionsData` +- `EmissionsForecast` + +A record is defined for each of these data types owned by the library. + +```c# +namespace GSF.CarbonAware.Models; +public record EmissionsData +{ + string Location + DateTimeOffset Time + double Rating + TimeSpan Duration +} +``` + +```c# +namespace GSF.CarbonAware.Models; +public record EmissionsForecast +{ + DateTimeOffset RequestedAt + DateTimeOffset GeneratedAt + IEnumerable EmissionsDataPoints + IEnumerable OptimalDataPoints +} +``` + +The user can expect to either have a primitive type (such as an int) or one of +these specific models as a return type of the **Handlers**. + +### Handlers + +There will be two handlers for each of the data types returned: + +- `EmissionsHandler` +- `ForecastHandler` + +Each is responsible for interacting on its own domain. For instance, +EmissionsHandler can have a method `GetAverageCarbonIntensityAsync()` to pull +EmissionsData data from a configured data source and calculate the average +carbon intensity. ForecastHandler can have a method `GetCurrentAsync()`, that +will return a EmissionsForecast instance. (**Note**: The current core +implementation is using async/await paradigm, which would be the default for +library too). + +In addition, there is a `LocationHandler` that is responsible for retrieving all +the locations supported by the underlying datasource. + +### Parameters + +Both handlers require that exact fields be passed in as input. Within the docs +of each library function, we specifically call out which fields the function +expects to be defined versus which are optional. Internally, we handle creating +the CarbonAwareParameters object and validating the fields through that. + +## Carbon Aware Parameters + +The `CarbonAwareParameters` class allows the user to pass in a unique parameter +instance to the public methods in the Handlers with the specific parameters +needed by that call. The list of allowed parameters is defined in the class and +includes + +- SingleLocation +- MultipleLocations +- Start +- End +- RequestedAt +- Duration + +### Parameter Display Names + +The display name of each parameter can be overriden using the public setter. By +default, each parameter display name is set to the variable name (ex: +`Start = "start"`). The parameter display names are used when creating the +validation error messages. Overriding them is useful in situations where the +variables the user is using for input don't exactly match the default display +name of the parameter (e.g. the user variable in the controller is +`periodStartTime` instead of `startTime`). That way, when the error is thrown to +the user, the parameter names will match the users' expectation + +To do the override, define a class that inherits from +CarbonAwareParametersBaseDTO and uses the [FromQuery(Name = +"myAwesomeDisplayName")] or [JsonPropertyName("myAwesomeDisplayName")] +attribute. A second (less recommended) option is to pass the optional arg +Dictionary? displayNameMap when you are directly creating the +object. With either option, the SDK handles updating references internally. + +### Required Properties + +The first core check the parameters class does is validating that required +parameters are defined. By default, all parameters are considered optional. +Calling the `SetRequiredProperties(...)` function with the desired arguments +sets the required parameters for the instance. + +```csharp + /// + /// Accepts any PropertyNames as arguments and sets the associated property as required for validation. + /// + public void SetRequiredProperties(params PropertyName[] requiredProperties) +``` + +### Validations + +The second core check the parameters class does is enforcing validations on the +parameters themselves. Some common examples include + +- Relationship validations: _`start < end` must be true_ +- Content validations: _`list.Any()` must be true for list fields_ + +Calling the `SetValidations(...)` function with the desired arguments sets the +validations for the instance. + +```csharp + /// + /// Accepts any ValidationName as arguments and sets the associated validation to check. + /// + public void SetValidations(params ValidationName[] validationNames) +``` + +### Validate + +Calling the `Validate(...)` function validates (1) required parameters and (2) +specified validations. Currently, the only validation we check is whether +`start` is before `end`. + +If no errors are thrown, the function simply returns. If any validation errors +are found, they are packaged into a single `ArgumentException` error with each +being part of the `data` dictionary. + +``` + /// + /// Validates the properties and relationships between properties. Any validation errors found are packaged into an + /// ArgumentException and thrown. If there are no errors, simply returns void. + /// + public void Validate() +``` + +### Getters With Default Fallbacks + +Certain parameters have special getters that allow you to define a fallback +default value if the parameter is null. This can be useful in cases where a +parameter is optional, so you want to get it if it was defined by the user, or +otherwise fallback to a specific default. These include `Start`, `End`, +`Requested`,and `Duration` + +``` + DateTimeOffset StartOrDefault(DateTimeOffset defaultStart) + DateTimeOffset EndOrDefault(DateTimeOffset defaultEnd) + DateTimeOffset RequestedOrDefault(DateTimeOffset defaultRequested) + TimeSpan DurationOrDefault + +``` + +### Error Handling + +The `CarbonAwareException` class is used to report errors to the consumer. It +follows the `Exception` class approach, where messages and details are provided +as part of error reporting. + +## References + + diff --git a/casdk-docs/docs/architecture/data-sources.md b/casdk-docs/docs/architecture/data-sources.md new file mode 100644 index 000000000..e0e31acff --- /dev/null +++ b/casdk-docs/docs/architecture/data-sources.md @@ -0,0 +1,187 @@ +# Data Sources + +Data sources allow developers easily integrate different data providers into the +carbon aware SDK ([WattTime](https://www.wattime.org), +[ElectricityMaps](https://www.electricitymaps.com/), +[ElectricityMapsFree](https://www.co2signal.com/) etc) to be made available to +all higher-level user-interfaces (WebAPI, CLI, etc), while avoiding the details +of how to interact with any specific provider. + +## Data Sources' Responsibility + +Data sources act as the data ingestion tier for the SDK, handling the retrieval +of data from a given data provider. They contain specific knowledge about the +data provider they access, such as flags used in requests, fields that come back +in responses, special use cases etc. They also handle any external calls that +must be made to access the data provider. While helper clients can be built to +handle these calls, only the data source should have access to, and knowledge +of, that client. + +- For example, the WattTimeDataSource has a reference to a private + WattTimeClient within it's implementation. The WattTimeClient handles the HTTP + GET/POST calls to WattTime and the data source invokes the client once it has + processed the request, and then processes the response before returning a + final result. + +### GSF Handler <-> Data Source Contract + +In order for the SDK to support different data sources, there is a defined +contract between the Handler and the Data tier. The handler acts as the +"Business Logic" of the application so it needs a standard way of requesting +data from the data source and a standard response in return. This means that +each data source is responsible for: + +- Pre-processing any arguments passed to it from the handler to create the + expected request for the data provider. +- Post-processing the data provider result to create the expected return type + for the Handler. + +Each handler is responsible for interacting on its own domain. For instance, +EmissionsHandler can have a method `GetAverageCarbonIntensityAsync()` to pull +EmissionsData data from a configured data source and calculate the average +carbon intensity. ForecastHandler can have a method `GetCurrentForecastAsync()`, +that will return a EmissionsForecast instance. + +#### Post-Processing Caveat + +Post-processing should only ensure the types are what is expected and to fix any +inconsistencies or issues that may be known to that specific data source. This +post-processing **should not** do any extra data operations beyond those +required to fulfill the Handler request ( i.e., averaging, min/max ops etc.). +In other words, the data source should only manipulate data for the aim of +returning _valid\*_ data in the boundaries requested by the Handler. + +\* What constitutes _valid_ data varies between data sources. It may be the case +that some data sources don't handle time boundaries well so extra processing may +be required to ensure the data returned is what the handler expects assuming +it was any data source and that those edge cases would be handled properly. + +## Creating a New Data Source + +Each new data source should be a new .NET project under the +`CarbonAware.DataSources` namespace and corresponding directory. This project +should have a reference to the `CarbonAware` project, and include the +`Microsoft.Extensions.DependencyInjection` package. It should also be added to +the solution. We have provided a command snippet below: + +```bash +cd src +dotnet new classlib --name CarbonAware.DataSources.MyNewDataSource -o CarbonAware.DataSources/CarbonAware.DataSources.MyNewDataSource/src +dotnet sln add CarbonAware.DataSources/CarbonAware.DataSources.MyNewDataSource/src/CarbonAware.DataSources.MyNewDataSource.csproj +dotnet add CarbonAware.DataSources/CarbonAware.DataSources.MyNewDataSource/src/CarbonAware.DataSources.MyNewDataSource.csproj reference CarbonAware/src/CarbonAware.csproj +cd CarbonAware.DataSources/CarbonAware.DataSources.MyNewDataSource/src +dotnet add package Microsoft.Extensions.DependencyInjection +``` + +### Adding/Extending a Data Source Interface + +Each new data source should extend from a generic data source interface. A data +source interface defines all the parameters and functions that any data source +that falls under it's purview must define/implement. By defining the interface, +it allows the SDK to switch between the set of data sources seamlessly because +they all share the same input functions and output types. + +Currently there are 2 data source interfaces defined - `IEmissionsDataSource` +and `IForecastDataSource` - which provides functionality for retrieving actual +and forecasted carbon intensity data respectively. A new data source interface +should be defined only when there is a new general area of calculation that is +being introduced to the SDK. + +```csharp +using CarbonAware.Interfaces; +using CarbonAware.Model; +using Microsoft.Extensions.Logging; +namespace CarbonAware.DataSources.MyNewDataSource; +public class MyNewDataSource: IEmissionsDataSource +{ + ... +} +``` + +### Add Dependency Injection Configuration + +The SDK uses dependency injection to load registered data sources based on set +environment variables. For a data source to be registered, it need to have a +Service Collection Extension defined. To do so, add a `Configuration` directory +in your data source project and create a new ServiceCollectionExtensions file. +We have provided a command snippet below: + +```sh +cd src/CarbonAware.DataSources/CarbonAware.DataSources.MyNewDataSource/src +mkdir Configuration +touch Configuration\ServiceCollectionExtensions.cs +``` + +Using the skeleton below, add the data source specific configuration and +implementation instances to the service collection. + +```csharp +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +namespace CarbonAware.DataSources.MyNewDataSource.Configuration; +public static class ServiceCollectionExtensions +{ + public static void AddMyNewDataSource(this IServiceCollection services) + { + // ... register your data source with the IServiceCollection instance + } +} +``` + +### Register the New Data Source + +Once the data source's ServiceCollectionExtensions is configured, it can be +registered as an available data source for the SDK by adding to the switch +statement found in the AddDataSourceService function of +[this file](../../src/CarbonAware.DataSources/CarbonAware.DataSources.Registration\Configuration\ServiceCollectionExtensions.cs). +Note you will need to add a new enum type to the `DataSourceType` +[enum file](../../src/CarbonAware.DataSources/CarbonAware.DataSources.Registration/Configuration/DataSourceType.cs) +to reference in the switch statement. + +```csharp + switch (dataSourceType) + { + ... + case DataSourceType.MyNewDataSourceEnum: + { + services.AddMyNewDataSource(); + break; + } + ... + } +``` + +### Adding Tests + +Each new data source is expected to come with a robust unit test suite that +ensures that the main flows and edge cases are properly handled. This also +ensures that the SDK can switch seamlessly between data sources and the +experiences up the stack remains consistent and helpful to the user. + +The unit tests should be added as a new project under the data source's test +directory: +`CarbonAware.DataSources/CarbonAware.DataSources.MyNewDataSource/test`. Be sure +to include a reference to the data source's project and add it to the solution. +We have provided a command snippet below: + +```sh +cd src +dotnet new nunit --name CarbonAware.DataSources.MyNewDataSource.Tests -o CarbonAware.DataSources/CarbonAware.DataSources.MyNewDataSource/test +dotnet sln CarbonAwareSDK.sln add CarbonAware.DataSources/CarbonAware.DataSources.MyNewDataSource/test/CarbonAware.DataSources.MyNewDataSource.Tests.csproj +cd CarbonAware.DataSources/CarbonAware.DataSources.MyNewDataSource +dotnet add test/CarbonAware.DataSources.MyNewDataSource.Tests.csproj reference src/CarbonAware.DataSources.MyNewDataSource.csproj +``` + +### Try it Out + +You are now ready to try out your new data source! If you added a new +`IEmissionsDataSource`, you can configure it using the `EmissionsDataSource` +setting: + +```bash +DataSources__EmissionsDataSource="MyNewDataSource" +DataSources__Configurations__MyNewDataSource__Proxy__UseProxy=true +``` + +Both the WebAPI and the CLI read the env variables in so once set, you can spin +up either and send requests to get data from the new data source. diff --git a/casdk-docs/docs/architecture/decisions/0000-ladr-template.md b/casdk-docs/docs/architecture/decisions/0000-ladr-template.md new file mode 100644 index 000000000..1f77ec5d9 --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0000-ladr-template.md @@ -0,0 +1,55 @@ +# 1. Title + +> Anything quoted, such as this, should be removed in the final template and is +> provided for guidance only + +## Status + +[Proposed, Accepted, Deprecated, Superseded] + +## Context + +## Decision + +## Consequences + +## Green Impact + +[Positive, Neutral, Negative] + +> Does this ADR have a notable positive, neutral, or negative impact in relation +> to the Principles of Green Software. +> +> Include the major impact considerations across CPU intensity, hardware, +> network, behavioural, usage. Avoid minor impact concerns to give focus. It +> does not need to be detailed and in depth, but it should be clear in +> explaining why it's considered positive, neutral, or negative. +> +> Neutral cases may at times be self explanatory and a description won't be +> required. +> +> If it is negative, is there any plan or action to revisit this decision? +> +> If the ADR is a Green focused ADR, the section detail can simply say "Refer to +> the above". +> +> ### Positive example +> +> - ADR: Moved to elastic servers to reduce costs. +> - Green Impact: +> - Positive. Elastic servers reduce hardware requirements and also reduce +> compute intensity during low demand periods. +> +> ### Neutral example +> +> - ADR: Moved to different version of Tensorflow for feature +> - Green Impact: +> - Neutral +> +> ### Negative example +> +> - ADR: Moved to static VM deployment from elastic due to platform bug +> - Green Impact: +> - Negative. Static VM's will require a higher hardware and CPU intensity at +> all times. Once the bug is resolved we will look to move back to elastic. +> This is tracked via Issue #... diff --git a/casdk-docs/docs/architecture/decisions/0001-record-architecture-decisions.md b/casdk-docs/docs/architecture/decisions/0001-record-architecture-decisions.md new file mode 100644 index 000000000..3a5cc5057 --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0001-record-architecture-decisions.md @@ -0,0 +1,26 @@ +# 1. Record Architecture Decisions + +## Status + +Accepted + +## Context + +We need to record the architectural decisions made on this project. + +## Decision + +We will use Architecture Decision Records, as described by Michael Nygard in +this article: + + +## Consequences + +See Michael Nygard's article, linked above. + +## Green Impact + +Positive + +By ensuring all architecture decisions have green software considerations, we +will endeavour this to drive greener software engineering behaviours. diff --git a/casdk-docs/docs/architecture/decisions/0002-dev-containers.md b/casdk-docs/docs/architecture/decisions/0002-dev-containers.md new file mode 100644 index 000000000..23b786775 --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0002-dev-containers.md @@ -0,0 +1,44 @@ +# 2. Dev Containers + +## Status + +Accepted + +## Context + +Development activities require consistency for all developers to have the same +level of access to create Greeen Software as much as possible. The barrier to +entry should be as low as possible, the need to install the correct versions, +and get started with a pre-configured developer environment is key to leveraging +an ASK. The focus should be on "creating green software" as soon as possible, as +opposed to "getting ready to install the environment to create green software". + +In addition consistency between developer environments, the ability to resolve +issues, debug fellow contributor issues should be as consistent as possible. + +## Decision + +All developer experience and documentation should be focused on the dev +container experience. Any platform dependent documentation (for now) should be +kept minimal. + +## Consequences + +All platforms will have consistency, allowing for faster development of the SDK, +and more focus on features vs platform dependencies. + +Platform dependenct implementations and deployments will not have a focus as +they are abstracted. + +## Green Impact + +Positive + +By creating consistency in the developer environment we can ensure green +practices can be considered across all developer environments. This consistency +removes the compute minutes/hours of setup and time lost debugging across +environments, and testing time due to consistency across all environments. + +Operating a dev container requires similar CPU intensity with higher memory +requirements. Developers are highly likely to already meet these hardware +requirements and be using dev containers (no additional hardware required). diff --git a/casdk-docs/docs/architecture/decisions/0003-command-line-params-to-config.md b/casdk-docs/docs/architecture/decisions/0003-command-line-params-to-config.md new file mode 100644 index 000000000..bec6bb4cc --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0003-command-line-params-to-config.md @@ -0,0 +1,54 @@ +# 3. Move Command Line Parameters to Config File + +## Status + +Accepted + +## Context + +The CLI works currently through a variety of command line parameters, and while +this works for the current array of options, it is unlikely to cater for future +needs. + +With a dynamic plugin based architecture, plugins will require a variety of +custom configurations that can not be predetermined by the command line. + +To handle this we need to abstract this complexity of "how" the SDK is +configured from the command line parameters. + +## Decision + +The decisions is to move all command line parameters other than time "-t --time +-toTime" and location "-l --location" parameters to a standard +"carbon-aware.config". The only other command line parameters that will remain +are "-h --help" and a new command line parameter to define the configuration +file location "-c --config". + +The file will be a json file due to json being widely known, and static data +files already being in json, so this will not introduce any other dependencies +or skills. + +## Consequences + +This will mean the application will have a standalone executable + a config +file. + +The usage focus becomes more of "when" and "where" vs "how". "How" is now +configured. + +Regardless of plugin, the command line parameters will always be the same. This +will create more consistency. Due to this, testing command line will now be +consistent across plugins due to the configuration file being the only change. + +For native integration to the SDK, this configuration would usually be in code. +This can still occur, however it would not be possible to store this +configuration externally if required, making the native code configurable also. + +Configuration may differ betweeen platforms/languages - however this would be +the case via command line. This means there will be consistency in the command +line between platforms, hiding platform depdendencies from the parameters and +moved to the config. + +## Green Impact + +Neutral diff --git a/casdk-docs/docs/architecture/decisions/0004-documentation.md b/casdk-docs/docs/architecture/decisions/0004-documentation.md new file mode 100644 index 000000000..ba0e7fef1 --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0004-documentation.md @@ -0,0 +1,120 @@ +# 4. Documentation + +## Status + +Accepted + +## Context + +There are README.md files in many different directories and little clarity as to +who that documentation is meant to serve. Some are focused on users operating +the software, others on developers extending the software, sometimes both in the +same file. There are also various other markdown files with a wide range of +completeness. As a user it is hard to know where to look to run the software and +as a developer it is unclear where new documentation should live and for whom it +needs to be written. + +## Decision + +Documents containing metadata about the repository/project or communicating +organizational processes shall live at the root. Examples include the project +overview `README.md`, `CONTRIBUTING.md`, `LICENSE.md`, etc. + +All documentation regarding the usage, extension, or additional development of +the carbon-aware-sdk software shall live in the `/docs` directory. + +Documentation focused on using the software as-is (CLI installation, +configuration docs, running the web API, etc) shall be kept separate from +documentation focused on developing new features or extending the sdk. + +No documentation shall live outside the `root` or `/docs` directories. All other +`README.md` files must only contain relative links back to the appropriate +`/docs` file. EG: + +> `./src/CarbonAware.WebApi/README.md` +> +> ```markdown +> # CarbonAware.WebApi +> +> - [Getting started](/docs/carbon-aware-webapi.md) +> - [Architecture](/docs/architecture/overview.md) +> ``` + +To enforce file consistency for readers and authors, documentation will be +linted using +[markdownlint](https://github.com/DavidAnson/markdownlint/tree/main). + +## Consequences + +### Immediate Changes + +If this structure is accepted the follow changes would be required to align the +repository: + +- placeholder files in `/carbon-aware-sdk` are deleted. +- `/carbon-aware-sdk/license.md` is moved to `/LICENSE.md` +- `/carbon-aware-sdk/Readme.md` content is rehomed to `/README.md` as + appropriate. +- `/images/placehold.md` is deleted. +- `/images` directory is moved to `/docs/images`. +- `overview.md` content is rehomed to the `/docs` directory as + appropriate. +- Content from the `README.md` files in the `/src` directory/sub-directories + (detailed below) are rehomed to new files in the `/docs` directory. + - `src\README.md` + - `src\CarbonAware.Aggregators\src\CarbonAware\README.md` + - `src\CarbonAware.LocationSources\CarbonAware.LocationSources.Azure\README.md` + - `src\CarbonAware.Tools\CarbonAware.Tools.AWSRegionTestDataGenerator\README.md` + - `src\CarbonAware.Tools\CarbonAware.Tools.AzureRegionTestDataGenerator\README.md` + - `src\CarbonAware.Tools\CarbonAware.Tools.WattTimeClient\src\README.md` + - `src\CarbonAware.WebApi\src\README.md` + - `src\CarbonAware\src\docs\README.md` +- Minor formatting changes made to all files to address existing linting + warning. + +More examples provided in the [Appendix](#appendix). + +### Longer Term Impact + +In the current [monorepo](https://en.wikipedia.org/wiki/Monorepo) structure, +this change should make documentation easier to find, use, and write. However, +this type of consolidation is non-trivial to separate out (especially as it +grows) should the project decide to split components into different repositories +in the future. + +## Green Impact + +Neutral + +## Appendix + +Here is an example of what this repository's documentation may look like +following implementation of this ADR proposal: + +```text +./ + ┣ docs/ + ┃ ┣ architecture/ + ┃ ┃ ┣ decisions/ + ┃ ┃ ┃ ┣ 0000-ladr-template.md + ┃ ┃ ┃ ┣ 0001-record-architecture-decisions.md + ┃ ┃ ┃ ┣ 0002-dev-containers.md + ┃ ┃ ┃ ┣ 0003-command-line-params-to-config.md + ┃ ┃ ┃ ┗ 0004-documentation.md + ┃ ┃ ┣ overview.md + ┃ ┃ ┣ user-interfaces.md + ┃ ┃ ┣ aggregators.md + ┃ ┃ ┗ data-sources.md + ┃ ┣ quickstart.md + ┃ ┣ configuration.md + ┃ ┣ carbon-aware-webapi.md + ┃ ┗ carbon-aware-cli.md + ┣ samples/ + ┃ ┣ helmexample/ + ┃ ┃ ┗ README.md + ┃ ┗ python-proxy-server/ + ┃ ┗ README.md + ┣ README.md + ┣ CONTRIBUTIING.md + ┗ LICENSE.md +``` diff --git a/casdk-docs/docs/architecture/decisions/0005-IAsyncEnumerable-HttpResponseExceptionFilter.md b/casdk-docs/docs/architecture/decisions/0005-IAsyncEnumerable-HttpResponseExceptionFilter.md new file mode 100644 index 000000000..431b321b0 --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0005-IAsyncEnumerable-HttpResponseExceptionFilter.md @@ -0,0 +1,45 @@ +# 5. WebAPI to use IAsyncEnumerable to stream potentially large responses + +## Status + +Rejected (by design when proposed) + +## Context + +There are currently two endpoints (`emissions/forecasts/batch`, +`emissions/average-carbon-intensity/batch`) that require passing a payload as an +array of items. This array can have as many items as the user wants, and it can +take some time to be processed which creates a delay to the client, which might +feel that the service is irresponsive. Also, since these requests return +enumerable items, and those are buffered before the client gets it, it impacts +the overall memory footprint of the WebApp. Changing the signature of these +endpoints to return an `IAsyncEnumerable` collection streams the response and +helps to deal with these memory concerns. + +## Decision + +- Using IAsyncEnumerable return type for a controller helps to stream large + content to a client when the request is large. Allowing the client to get a + flow of continue content without the need to wait until the entire request is + processed. (for instance forecast batch with 50 entries) +- Low memory overhead of the container: Processing large requests and not + buffering the response by the controller helps to manage this. Using + `IActionResult` results in buffering the response, hence memory can grow + pretty large. + +Given the fact that the expectation of using batch jobs - forecast and carbon +aware intensity - are not that large, using `IActionResult` would be enough. + +## Consequences + +- Dealing with partial failures leaves the client in the 'dark' given the fact + that the error is treated as a HTTP 500 error. It doesn't get propagated to + the client with a reason, making it hard to diagnose. +- Writing a custom Middleware to handle partial failures, won't scale since it + has to buffer the response to avoid dotnet internal errors + `(The response has already started, the error handler will not be executed.)`, + removing the whole goal of using `IAsyncEnumerable`. + +## Green Impact + +Neutral diff --git a/casdk-docs/docs/architecture/decisions/0006-data-source-registration.md b/casdk-docs/docs/architecture/decisions/0006-data-source-registration.md new file mode 100644 index 000000000..ff48b0e9c --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0006-data-source-registration.md @@ -0,0 +1,102 @@ +# 6. Data Source Registration + +## Status + +Accepted + +## Date + +2022-11-1 + +## Context + +Currently, data sources must be hardcoded into a separate +`CarbonAware.DataSources.Registration` project to be configured with the +existing dependency injection methods. This means that data source developers +must plumb their code across multiple projects. It forces external developers +who want to use the SDK as-is, but with a custom data source, to copy and modify +the entire codebase to wire in their custom data source. Finally, it adds +unnecessary bloat by requiring every possible data source to be included in all +release builds. + +## Decision + +Consumers declare which data sources they want to include in the project's +.csproj file. Operators can reference them via the configuration and they will +be set up. + +## Consequences + +### Usability + +- Data source developers within this project can make a full contribution + without knowledge of other projects. +- External developers still need to copy the project to access the interfaces, + but similarly require less knowledge to create, and this paves the way for + future enhancements if components are released as public packages. +- Composable data sources reduces build times and artifact sizes. + +### Implementation + +A single `ServiceCollectionExtension` class extension can be provided to use the +configuration & assembly to discover classes which implement data source +interfaces. This approach to using +[pluggable interfaces](https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support) +follows existing .NET best practices. + +The classes would be responsible for their own configuration and dependencies. +This means that configuration logic would need to move from its existing +`ServiceCollectionExtensions` location to a static class on the data source. + +#### Example + +```csharp +// Get the config +var config = configuration + .GetSection(CarbonAwareVariablesConfiguration.Key) + .Get(); + +// Load the assembly for the configured 'CarbonIntensityDataSource'. +// EG 'WattTime' +var assembly = Assembly.Load($"CarbonAware.DataSources.{config.CarbonIntensityDataSource}"); + +// Get the classes in the CarbonAware.DataSources.WattTime project +// that implement the ICarbonIntensityDataSource interface. +// Pick the first, because we only expect one right now. +var carbonIntensityDataSourceType = assembly.GetTypes() + .Where(type => typeof(ICarbonIntensityDataSource).IsAssignableFrom(type) && !type.IsInterface && !type.IsAbstract) + .First(); + +// Call static configuration method on the data source to allow it +// to configure itself and its dependencies. +MethodInfo configureMethod = typeof(carbonIntensityDataSourceType).GetMethod( + "ConfigureDI", + BindingFlags.Static | BindingFlags.Public +); +configureMethod.Invoke(null, services, configuration); +``` + +```csharp +public class WattTimeDataSource : ICarbonAwareDataSource +{ + public static ConfigureDI(IServiceCollection services, IConfiguration configuration) + { + services.ConfigureWattTimeClient(configuration); + services.TryAddSingleton(); + services.TryAddSingleton(); + } + // ... +} +``` + +## Green Impact + +Positive + +By reducing the size of releases, less energy is required to store and +[transmit](https://patterns.greensoftware.foundation/catalog/cloud/reduce-transmitted-data) +the data throughout the rest of the SDLC journey. + +## Additional Resources + +[Plugins with DI](https://jussihaapanen.com/posts/dotnet-core-plugin-dependency-injection/) diff --git a/casdk-docs/docs/architecture/decisions/0007-data-source-interfaces.md b/casdk-docs/docs/architecture/decisions/0007-data-source-interfaces.md new file mode 100644 index 000000000..4e62d87f0 --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0007-data-source-interfaces.md @@ -0,0 +1,148 @@ +# 7. Data Source Interfaces + +## Status + +Accepted + +## Date + +2022-11-1 + +## Context + +Data sources can meet the needs of multiple use-cases, but all data sources +should not be expected to meet all needs. Currently, the `JsonDataSource` throws +a `NotImplementedException` for forecast-related methods required by the +`ICarbonAwareDataSource` interface. As functionality expands in this way it +becomes harder maintain data sources and it prevents programmatic understanding +of which methods are actually available to the user. + +For example, if someone wanted to expand functionality to include access to +power generation sources (coal, hydro, solar, etc.), such a change breaks +existing data sources and likely forces them into a similar workaround of +raising exceptions to meet the new interface. Users may similarly start to see a +`power-consumption` command in the CLI that throws errors for the data source +they are using. + +## Decision + +The project will strive toward the +[interface segregation principle](https://en.wikipedia.org/wiki/Interface_segregation_principle) +of [SOLID](https://en.wikipedia.org/wiki/SOLID) design by using separate +interfaces for unique [roles](https://martinfowler.com/bliki/RoleInterface.html) +that a data source may serve. This is often signalled by a different +model/schema being returned by the methods. + +A single data sources can implement multiple interfaces. + +## Consequences + +### Current Implementation + +#### Interfaces + +To align with this decision, the `ICarbonIntensityDataSource` interface would be +broken into two interfaces: + +- `IEmissionsDataSource` – for data sources of measured emissions data +- `IForecastDataSource` – for data sources of forecasted emissions data + +#### Aggregators + +There is also no need for these data sources to have a shared aggregator as none +of the existing aggregator functions leverage both types of data together. Thus, +there should be two corresponding aggregators: + +- `EmissionsAggregator` +- `ForecastAggregator` + +Each aggregator should have its own parameters class, however the appropriate +way to split up the existing `CarbonAwareParameters` class is less +straight-forward due to the large amount of shared code. How to split up this +class should be the subject of its own ADR, and it should continue to be shared +by both aggregators until an agreed upon design has been reached. + +#### Configuration + +Each data source type should be independently configurable. So an example config +of + +```json +{ + "carbonAwareVars": { + "carbonIntensityDataSource": "WattTime" + // ... + } + // ... +} +``` + +becomes the following with no user-facing changes since WattTime implements both +interfaces: + +```json +{ + "carbonAwareVars": { + "emissionsDataSource": "WattTime", + "forecastDataSource": "WattTime" + // ... + } + // ... +} +``` + +But it now becomes possible to configure different sources for each type. + +```json +{ + "carbonAwareVars": { + "emissionsDataSource": "JSON", + "forecastDataSource": "WattTime" + // ... + } + // ... +} +``` + +**Other Config Considerations** _When no data source is specified..._ Use a +default data source following the +[null object pattern](https://en.wikipedia.org/wiki/Null_object_pattern) to +provide empty, but strongly-typed responses. + +_When the data source type is not implemented by the specified data source..._ +Throw an exception, alerting the operator to improper configuration. + +### Future Implications + +_New Aggregators_ A hypothetical feature which returned the differences between +forecasted emissions and measured emissions would implement a +`ForecastEmissionsAggregator` to get the data from both sources and do the +calculations. + +_New Interfaces_ A hypothetical feature which exposed power generation data +would create an `IPowerGenerationDataSource` which any data source with access +to such data could implement. + +It would be configured by operators the same way as existing data source types, +by looking up the matching name of the interface (without the leading "I") in +the `carbonAwareVars` section of the config. + +```json +{ + "carbonAwareVars": { + "emissionsDataSource": "JSON", + "forecastDataSource": "WattTime", + "powerGenerationDataSource": "MyNewDataSourceName" + // ... + } + // ... +} +``` + +Features would be exposed to consumers via a `PowerGenerationAggregator` or some +joint aggregator that merges data with another source, depending on the +use-case. + +## Green Impact + +Neutral diff --git a/casdk-docs/docs/architecture/decisions/0008-data-source-configuration.md b/casdk-docs/docs/architecture/decisions/0008-data-source-configuration.md new file mode 100644 index 000000000..0729ab075 --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0008-data-source-configuration.md @@ -0,0 +1,109 @@ +# 8. Data Source Configuration + +## Status + +Accepted + +## Date + +2022-11-1 + +## Context + +The current CarbonAware configuration is not intuitive for a user because it +hides the relationships between entities, and so requires deep reading of the +documentation to properly configure. This challenge is amplified for use-cases +where different interfaces can be configured with different data sources. EG: +JSON data source for emissions, but WattTime data source for forecast data. + +## Decision + +A top-level 'DataSources' section will specify all of the data source +configuration needs for the consumer. + +Within that, specific data source configurations will be defined in the +'Configurations' section. Each item containing the parameters required for +configuring the data source in its entirety EG: client config, file paths, +additional parameters, etc. + +Each data source interface can then be configured by referencing these +'Configurations' by their key. + +The resulting 'DataSources' config schema being: + +```json +{ + "DataSources": { + : <'Configurations' Key String>, + : <'Configurations' Key String>, + //... + "Configurations": { + : { + "Type": , + : , + : , + //... + }, + : { + //... + }, + //... + } + } +} +``` + +## Consequences + +The configuration scheme is flexible and extensible to support any new +interfaces and data sources. It reflects the relationship between data sources +and all of their relevant configuration values. + +### Implementation + +Here is an example of the proposed configuration schema change with multiple +potential data source interfaces: + +```json +{ + "DataSources": { + "CarbonIntensityDataSource": "WattTime", + "EnergyDataSource": "ElectricityMaps", + "EmbodiedCarbonDataSource": "ElectricityMaps", + "Configurations": { + "WattTime": { + "Type": "CarbonAware.DataSources.WattTime", + "ClientConfiguration": { + "Username": "username", + "Password": "password", + "BaseURL": "https://api2.watttime.org/v2/" + } + }, + "ElectricityMaps": { + "Type": "CarbonAware.DataSources.ElectricityMaps", + "ClientConfiguration": { + "API_Key": "abcd", + "BaseURL": "https://api.electricitymap.org/v3/" + }, + "disableEstimations": "true", + "emissionsFactorType": "lifecycle" + } + } + } +``` + +During initialization of the interface, the config will read to get the data +source associated with it. For example, when a `CarbonIntensityDataSource` is +initialized, it will get the corresponding value from the config, which is +'WattTime' in the above example. It then looks up the value of the 'WattTime' +key in the 'Configurations' section. The object retrieved from the config will +be then used to load and configure the `WattTimeDataSource`. + +This "by-reference" configuration enables operators to use the same +configuration for multiple data source interfaces without requiring duplication, +as shown in the above example with the hypothetical `EnergyDataSource` and +`EmbodiedCarbonDataSource` both using the same `ElectricityMaps` data source. + +## Green Impact + +Neutral diff --git a/casdk-docs/docs/architecture/decisions/0009-sdk-as-a-csharp-client-library.md b/casdk-docs/docs/architecture/decisions/0009-sdk-as-a-csharp-client-library.md new file mode 100644 index 000000000..e60ce740a --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0009-sdk-as-a-csharp-client-library.md @@ -0,0 +1,90 @@ +# 0009. SDK as a C# Client Library + +## Status + +Accepted + +## Date + +2022-11-1 + +## Context + +Currently the SDK can only be used as a runtime (CLI/Web API) and we are +exploring what it would take to turn it into a C# client library. This involves +determining what would be exposed as part of the library and how to call it. We +also include any changes we believe should be made to the current state of the +SDK to better support a library. + +## Decision + +In order to best support a library, we propose adding a new dotnet project that +lives above the Aggregator to handle access to the core business logic and +configuration management. Along with this, we have noted other issues that we +believe should also be addressed. + +**[Must Address]** Creation of a shim that lives on top of the Aggregator and is +exposed in library + +- Benefits + - Continues the consumer tier model (Web API/CLI) wherein the user doesn't + have access to the aggregator directly but rather via an intermediary layer. + - Keeps complex logic internal and only exposes top-level requests + - Enables more tailored, specific documentation about how to use it from a + consumer perspective, rather than trying to squeeze both general and + technical documentation onto the aggregator directly. +- Effort - Medium + - Add a new dotnet project + - Add robust documentation + - Add full testing suite + +**[Must Address]** Creation of a parameters builder class to shield library +users from directly instantiating the CarbonAwareParameters. + +- Benefits + - Keeps internal DTOs private and does not require user to understand expected + internal types + parsing. + - Builder has greater usability; easy to understand and use intermediary to + instantiate an immutable CarbonAwareParameters. + - Can design for passing of extra parameters (that a specific data source may + need) and the internally handle converting to CarbonAwareParameters +- Effort - Low + - Write a small builder on top of existing class with no new functionality. + +**[Should Address]**: Clear access boundaries throughout SDK ala +public/internal/private classes/records + +- Benefits + - Users don't need to onboard onto all complexity of the SDK in order to use, + they only have to understand the exposed classes. + - Users aren't calling SDK classes that aren't fully documented and/or don't + have the guarantee of stability or consistency that the upper level consumer + tier classes do + - Users can’t fall into edge cases by calling classes “down the stack” that + had implicit checks/requirements that were validated higher up + - Users can't modify objects that are implicitly expected to be immutable by + the SDK because of the call stack order +- Effort - Medium/Large + - Would need to do a large scale refactor that may break internal access + +**[Future Scope]**: Managed subsystems for Carbon Aware access, configuration, +data source credentials etc. + +- Benefits + - Improves security because Env isn’t the most secure way to handle + credentials. Could build a robust credential manager. + - Improves maintainability of the SDK because each sub-system can be worked + on/improved in isolation without being tied to all the other sub-systems. + - Flexible/dynamic configurations allow users to make changes live +- Effort - Large + +## Consequences + +The SDK will be in a state where it can be packaged into binaries for users to +integrate with directly. With the changes, the amount of onboarding needed to +use the SDK library, and the amount of code that needs to be written to call it +should be minimal. + +## Green Impact + +Neutral diff --git a/casdk-docs/docs/architecture/decisions/0010-sdk-packaging.md b/casdk-docs/docs/architecture/decisions/0010-sdk-packaging.md new file mode 100644 index 000000000..105f6c987 --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0010-sdk-packaging.md @@ -0,0 +1,76 @@ +# 0010. Create packages for CarbonAware SDK + +## Status + +Accepted + +## Date + +2022-11-1 + +## Context + +Current GSF CarbonAware software can't be consumed as +[Nuget](https://www.nuget.org) packages in case there is an application that +requires to integrate with it. There are scenarios where the current runtimes +(CLI/WebApi) environments are not allowed to be used since all the functionality +requires to be bundled together. The goal of this proposal is to show that the +current GSF repository can provide a mechanism to generate `Nuget` packages that +can be consumed by any application that wants to integrate with +`GSF CarbonAware`. + +## Decision + +Having Nuget packages available to be consumed by 3rd party application would +help to integrate easily and it would open the possibilities to extend the SDK +more. Currently there are seven (7) `dotnet` projects that can be set to be +packaged with tools like `dotnet pack` or `msbuild -t:pack`. + +| CarbonAware Packages | +| --------------------------------------- | +| CarbonAware | +| CarbonAware.Aggregators | +| CarbonAware.DataSources.ElectricityMaps | +| CarbonAware.DataSources.Json | +| CarbonAware.DataSources.Registration | +| CarbonAware.DataSources.WattTime | +| CarbonAware.LocationSources | +| CarbonAware.Tools.WattTimeClient | + +**[Must Address]** Creation of a minimum set of packages that can be integrated +with a 3rd party application. + +- Continues enhancing the SDK to support integration with different type of + applications. +- Enhance project files (csproj) to incorporate package metadata. +- Enhance project files (csproj) to include resources data files. + +**[Should Address]** Creation of a package repository(ies). + +- Use a local feed, private feed or nuget.org repositories. +- Setup package metadata to include packageId, version, description, ... + +**[Should Address]**: Creation of automated package generation and test. + +- Enhance workflows to create packages and upload to a defined Nuget repository + for public/private consumption. +- Validate package creation that works as expected with a predefined + application. + +## Consequences + +- Bundle 3rd party integration. +- Selective application functionality, by picking the required packages to be + bundled with. +- No need for a runtime environment to integrate. +- No need to clone the repository to have a functional application. + +## Green Impact + +Neutral + +## References + +[Package dotnet CLI](https://learn.microsoft.com/en-us/nuget/create-packages/creating-a-package-dotnet-cli) + +[Sign Package](https://learn.microsoft.com/en-us/nuget/create-packages/sign-a-package) diff --git a/casdk-docs/docs/architecture/decisions/0011-cd-pipeline.md b/casdk-docs/docs/architecture/decisions/0011-cd-pipeline.md new file mode 100644 index 000000000..61595281e --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0011-cd-pipeline.md @@ -0,0 +1,59 @@ +# 0011. CD pipeline for release process + +## Status + +Accepted + +## Context + +Currently (v1.0 at least), Carbon Aware SDK does not ship any binaries include +client library even if release tag is set on GitHub. All of users who want to +use the SDK have to build binaries for themselves. + +For example, +[README.md for Carbon Hack 22](https://github.com/Green-Software-Foundation/carbon-aware-sdk/blob/4eeca4cf95db755adecf8e4efe66d1a49c9a74b6/README.md) +guides participants for Hackerthon can try Web API which is +[hosted on Azure](https://carbon-aware-api.azurewebsites.net/swagger/index.html), +then we don't need to access all of sources of the SDK, however we have to +access SDK source to build client library. + +Carbon Aware SDK has client generator for some languages in +[src/clients](https://github.com/Green-Software-Foundation/carbon-aware-sdk/tree/bbbc5b89805f057142401be169664504f835bf95/src/clients), +and discusses to add .NET library as NuGet package in +[ADR-0009](https://github.com/Green-Software-Foundation/carbon-aware-sdk/blob/dev/docs/architecture/decisions/0009-sdk-as-a-c%23-client-library.md). +It is very useful for all SDK users / developers if both WebAPI and client +libraries are shipped as binaries. + +## Decision + +Ships both WebAPI container and client libraries when new release happens. + +Fortunately, we can use +[GitHub Packages](https://docs.github.com/en/packages/learn-github-packages/introduction-to-github-packages) +for this purpose, and we can integrate it with +[`release` event on GitHub Actions](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#release) +(GHA). + +In our case, we can ship following binaries via GitHub Packages: + +- WebAPI container +- Client libraries + - .NET + - Java + - JavaScript + +This ADR aims to ship them when new release happens automatically. + +Environment-specific problems are unlikely to happen. All of release binaries +will be built on GHA, and we can QA in its workflows. If some problems happen, +we will investigate source code and/or GHA workflows. + +## Green Impact + +Neutral + +## References + +- +- [GitHub Packages](https://github.com/features/packages) +- [GitHub Actions](https://github.com/features/actions) diff --git a/casdk-docs/docs/architecture/decisions/0012-electricity-maps-free.md b/casdk-docs/docs/architecture/decisions/0012-electricity-maps-free.md new file mode 100644 index 000000000..6094a62e5 --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0012-electricity-maps-free.md @@ -0,0 +1,65 @@ +# 0012. Treat Electricity Maps and Electricity Maps Free as different, unrelated data sources + +## Status +Approved + +## Context +Electricity Maps offers two different services: +- the paid one, which has already been added to the dev branch of the Carbon Aware SDK, +- and the free one, which they also call "CO2 Signal" (), which the Carbon Aware SDK already supports in a [branch](https://github.com/Green-Software-Foundation/carbon-aware-sdk/tree/feat/electricity-map), though it is based on an older, now outdated version of the SDK. + +These two services, despite being provided by the same company, use different APIs. The free API isn't just a subset of the paid one: **the endpoints are different, the tokens are different, and the responses are different**. Here's an example of two equivalent calls to these services, getting the latest value for the Carbon Intensity in France: + +- ElectricityMaps free (CO2 Signal): + - Documentation: + - Request: + + `curl -s 'https://api.co2signal.com/v1/latest?countryCode=FR' -H 'auth-token: myapitoken'` + + - Response: + + { + "_disclaimer": "This data is the exclusive property of Electricity Maps and/or related parties. If you're in doubt about your rights to use this data, please contact api@co2signal.com", + "status": "ok", + "countryCode": "FR", + "data": { + "datetime": "2023-01-23T17:00:00.000Z", + "carbonIntensity": 103, + "fossilFuelPercentage": 13.639999999999999 + }, + "units": { + "carbonIntensity": "gCO2eq/kWh" + } + } + + +- ElectricityMaps paid: + - Documentation: + - Request: + + `curl -s 'https://api.electricitymap.org/v3/carbon-intensity/latest?zone=FR' -H 'auth-token: myapitoken'` + + - Response: + + { + "zone": "FR", + "carbonIntensity": 103, + "datetime": "2023-01-23T17:00:00.000Z", + "updatedAt": "2023-01-23T16:53:20.794Z", + "emissionFactorType": "lifecycle", + "isEstimated": true, + "estimationMethod": "TIME_SLICER_AVERAGE" + } + +The goal is to support both services, to maximize the usage of the Carbon Aware SDK. The question is how to handle these differences. +Treating them as the same data source would require to add some complexity, to distinguish whether an account is free or paid. This distinction would have to be either in the form of an extra parameter, or it would require the Carbon Aware SDK to test every time (at least once per session) which service is meant, using a fallback logic: try the paid service first, and if you get an error try the free one. This adds complexity, requires managing the error code, and in any case forces to make more calls, which has a negative impact on the emissions. + +## Decision +Since the endpoints, the tokens and the output format are all different, it is easier to treat them as different data sources, unrelated to each other, called "Electricty Maps" and "Electricty Maps Free". This approach requires the user to explicitly indicate what service they want to use, but then every other problem is solved automatically. + + +## Consequences +The new data source will have to be added following the [instructions](https://github.com/Green-Software-Foundation/carbon-aware-sdk/blob/Changelog/docs/architecture/data-sources.md#user-content-creating-a-new-data-source). + +## Green Impact +Neutral. This is an implementation detail, under the hood. It has no impact for the users of the Carbon Aware SDK. diff --git a/casdk-docs/docs/architecture/decisions/0013-remove-aggregator-layer.md b/casdk-docs/docs/architecture/decisions/0013-remove-aggregator-layer.md new file mode 100644 index 000000000..e16cbcb12 --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0013-remove-aggregator-layer.md @@ -0,0 +1,34 @@ +# 0013. Remove Aggregator layer from the Carbon Aware Architechture + +## Status + +Approved + +## Context +The Carbon Aware SDK provides a public library to retrieve carbon emissions data. The library consists of public handler interfaces and data models that can be consumed by any consumer layer like WebAPI, CLI, Azure Functions etc. +With the inclusion of these handlers, the Aggregator layer has now become obsolete. It is has been replaced by the handlers, which are more aligned with the carbon intensity feature. +The current workflow in the repo looks like this- Consumer==>CA Library==>Aggregator==>Datasource. + +## Decision + +The proposal is to remove the Aggregator layer from the architechture, and make the Handlers act as the business layer between the consumer and the data source. +GSF Library handlers will be responsible for taking in consumer requests, calling the specified data source, and performing any necessary logic before returning the result to the consumer. +The Consumer layer will call the public interfaces in the library, thereby defining clear access boundaries between the different layers. This will eliminate any references to the Aggregator layer and we can safely remove it from the SDK without changing the existing functionality. + +## Sequence diagram + +![WebApi Screenshot](../../images/revised-end-end-tiers.png) + + +## Benefits + +- Clear access boundaries defined +- Less code to maintain +- Smaller size of packaged binary +- Clear separation of concerns between different layers + + +## Green Impact + +Neutral + diff --git a/casdk-docs/docs/architecture/decisions/0014-dynamic-datasource-registration.md b/casdk-docs/docs/architecture/decisions/0014-dynamic-datasource-registration.md new file mode 100644 index 000000000..fb8071efc --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0014-dynamic-datasource-registration.md @@ -0,0 +1,106 @@ +# 0014. Dynamic Data Source Registration + +## Status + +Proposed + +## Context + +Decouple the data sources from the SDK into their own NuGet packages will allow for new data sources to be plugged in with minimum configuration and dependency on the existing code base. + +## Decision + +- Decoupling from SDK + +Each data source can be built externally with no dependency on the CarbonAware SDK. This helps achieve single responsibility principle and makes the system extensible. + +- Increased Maintainability + +Currently, the data source registration code is implemented using a switch statement to register the appropriate data source based on configuration. This can be removed completely and only the data source needed can be imported into the SDK. + +- Controlled Solution Size + +All the data sources are part of the current SDK, even if they are not used at runtime. For e.g., if both **IEmissions** and **IForecast** interfaces are configured to use WattTime, we need not package the JSON and ElectricityMaps data sources, thereby reducing solution’s size. + +- Reduction of Security threats + +Having decoupled data sources as packages, it allows us to control potential security threats that can be injected into the overall system, by providing the opportunity to certify them. + +## Consequences + +Be able to have outsourced Data Sources would benefit the overall system in case there is a large number of those by allowing which one should be part of a solution. + +## Design Considerations + +Currently Data Sources project is consumed by GSF library using Dependency Injection. Each GSF library handlers have references to `IForecastDataSource` and/or `IEmissionsDataSource` Data Source interfaces. +To modify this interaction and to make it more dynamic, these are things that required to be considered: + +- Public interfaces & Data Records + + Data Sources interfaces and Data Records are internal and available only to certain projects (i.e GSF.CarbonAware). This would require to be changed so consumers can dynamically register those and consume them. + + Effort Level: **Medium** + +- Packaging + + Current Data Source project is not allowed to be packaged (NuGet package, see `` property on one of the Data Source projects), which would require how this is going to be done in terms of, what the package contains, versioning and where to publish it. + + Effort Level: **Medium** + +- Load, Register and Instantiate + + Using techniques like **Reflection** and **Assembly Discovery**, it would be possible to load Data Sources assemblies and instantiate classes that implements the interfaces that are available. + As an example, this could be done via a Data Source class loader + + ```c# + static Assembly[] GetDataSourceAssemblies() + { + var assemblies = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll") + .Where(x => x.Contains("CarbonAware.DataSource")) + .Select(x => Assembly.Load(AssemblyName.GetAssemblyName(x))); + return assemblies.ToArray(); + } + ``` + + Then the consumer could be using Reflection to instantiate the classes interested: + + ```c# + Type providerType = DataSourceAssembly.GetType("CarbonAware.DataSource.ProviderA"); + + var theForecast = Activator.CreateInstance(providerType) as IForecastDataSource; + theForecast.GetCarbonIntensityForecastAsync(…) // Invoke the interface method. + ``` + + This responsibility should be part of a new GSF library subsystem. + + Effort Level: **Medium** + +- Data Source manifest + + Configuration information would be required to be part of the Data Source package, so the GSF handlers can interact with it. Properties like where to locate the assembly, what assembly to load, what classes to interact with (i.e., Builders/Factories) therefore Emissions and Forecast data can be retrieved from GSF handlers. Designing this manifest would help to drive the implementation of the other items. + + Effort Level: **Large** + +- GSF Enhancements + + Given the fact the current registration is done using Dependency Injection, GSF library would require to be changed and enhanced to accommodate discovery, how to load the assemblies that are available and that implement Data Sources interfaces. Also understand the configuration that comes from the manifest, in such a way that all the required properties are available. + + Effort Level: **Medium** + +- Documentation + + Document how to create 3rd party Data Sources, how to package them and how to configure those based on a Data Source manifest. + + Effort Level: **Medium** + +## Green Impact + +Positive + +## References + +[Package dotnet CLI](https://learn.microsoft.com/en-us/nuget/create-packages/creating-a-package-dotnet-cli) + +[Sign Package](https://learn.microsoft.com/en-us/nuget/create-packages/sign-a-package) + +[Assemblies in .NET](https://learn.microsoft.com/en-us/dotnet/standard/assembly/) diff --git a/casdk-docs/docs/architecture/decisions/0015-cli-output-csv.md b/casdk-docs/docs/architecture/decisions/0015-cli-output-csv.md new file mode 100644 index 000000000..44b911b6c --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/0015-cli-output-csv.md @@ -0,0 +1,143 @@ + +# 0013. Add option to display CLI output in CSV format + +## Status + +Proposed + +## Context +There is a command line interface in the Carbon Aware SDK that currently contains 2 commands - emissions and emissions-forecasts. Both the commands produces response in a JSON format. There is no option to specify tje output in a different format such as CSV. + +## Decision + +The proposal is to have a global option that can be used to specify the output response as CSV. + +### New option + +```text + -o, --output +``` + +By default, if not specified, the output response for any command will be presented in JSON format. +If option value is specified as ‘csv’, the output will be displayed in csv format. + +command: + +```bash +.\caw emissions -l eastus --start-time 2023-01-30T00:00:00Z --end-time 2023-01-31T23:59:59Z --output csv +``` + +```csv +westeurope,2023-01-31T12:00:00.0000000+00:00,170,PT1H +westeurope,2023-01-31T13:00:00.0000000+00:00,169,PT1H +westeurope,2023-01-31T14:00:00.0000000+00:00,178,PT1H +westeurope,2023-01-31T15:00:00.0000000+00:00,196,PT1H +westeurope,2023-01-31T16:00:00.0000000+00:00,236,PT1H +``` +### Limitations of CSV format + +CSV format works best for simple, unnested data. If the data contains nested and repeated objects, csv format makes it less readable and may also be prone to errors. + +In the current SDK, we support ‘emissions’ and ‘emissions-forecasts’ commands. The output of ‘emissions’ command is a simple list of EmissionDTO objects and can be well represented in csv. However, for forecasts, the output contains nested list of forecast objects along with nested list of optimal data points. This is a complicated structure to be represented in a csv format and would provide less value for the end user to decipher this complex structure. + +## Proposed implementation options + + +### 1. Design new custom tool in the SDK + +To build a new in-house implementation, we need the following - + +- Create a library of classes that converts an object into a flattened csv format. +- Write code for serialization/deserialization of the objects. +- Ensure that the code is generic, and not strictly tied to emissions/forecast data. It should be able to convert any generic object into a csv structure. +- Use Reflection to access class variables and their types to keep the implementation generic. + +#### Challenges/Risks + +- Time consuming since it must be well designed to make the implementation generic. +- Representation of nested list of objects in CSV is not much readable and may not provide much value +- Adding more code in the SDK to be maintained. +- Thorough testing required. +- JSON is more acceptable format and is much more readable especially for nested objects. + + +### 2. Use third party library + +There are several libraries available at nuget,org that provide the tools for converting and serializing to CSV format. Some of the libraries that have been popular are ServiceStack. CSVSeriliazer, CsvHelper etc. + +#### Sample implementation using ServiceStack library + +Add the ServiceStack nuget package using nuget package explorer. + +Create a class that contains only primitive member variables. For eg – From EmiussionsForecastDTO, extract out all the primitive variables. For nested object types, extract the inner primitive variables and add them to the new class. In the following example, ForecastData object is flattened into 2 variables – ForecastRating and ForecastDuration. Also, OptimalDataPoints object is flattened into OptimalTime and OptimalRating. + +```c# +class EmissionsForecastDTO +{ + public DateTimeOffset GeneratedAt { get; set; } + public DateTimeOffset RequestedAt { get; set;}; + public string Location {get; set;} + public DateTimeOffset DataStartAt {get; set;} + public DateTimeOffset DataEndAt {get; set;} + public int WindowSize {get; set;} + public IEnumerable? OptimalDataPoints{get; set;} + public IEnumerable? ForecastData{get; set;} +} + +class EmissionsForecastCsvDTO +{ + public DateTimeOffset GeneratedAt {get; set;} + public DateTimeOffset RequestedAt {get; set;} + public string Location {get; set;}; + public DateTimeOffset DataStartAt {get; set;} + public DateTimeOffset DataEndAt {get; set;} + public int WindowSize {get; set;} + public DateTimeOffset? ForecastTime {get; set;} + public double ForecastRating {get; set;} + public TimeSpan? ForecastDuration {get; set;} + public DateTimeOffset? OptimalTime {get; set;} + public double OptimalRating {get; set;} +} +``` +Once we have a flattened object, we then use CsvSerializer to do the conversion as follows - + +```c# + var flattenedObj = emissionsForecast.SelectMany(d => d.ForecastData.Select(s => new EmissionsForecastCsvDTO + { + DataStartAt = d.DataStartAt, + DataEndAt = d.DataEndAt, + RequestedAt = d.RequestedAt, + WindowSize = d.WindowSize, + Location = d.Location, + ForecastRating = s.Rating, + ForecastDuration = s.Duration, + ForecastTime = d.GeneratedAt, + })); + + + var csvOutput = CsvSerializer.SerializeToCsv(flattenedObj); + context.Console.WriteLine(csvOutput); +``` +This code produces the result in the following format: + +![CSV response](../../images/emissions-forecast-csv.png) + +The data is a flattened representation of the nested objects hence it is duplicated across multiple rows. For large data, this representation can be very complex to decipher the actual data. + +Another possible way to represent the data would be to create multiple csv ouputs, each representing specific data. The user would have to create manual links to reference the specific data structures. + +#### Benefits of using Third party +- Faster implementation since library provides all the tools for conversion and serialization into CSV format +- Less code to maintain + +#### Limitations/Challenges +- Choosing a reliable library can be challenging +- Reduced flexibility since the code is tied to library API +- Security risks +- Update library version as new changes/fixes are added + + +## Green Impact + +Neutral + diff --git a/casdk-docs/docs/architecture/overview.md b/casdk-docs/docs/architecture/overview.md new file mode 100644 index 000000000..d01969621 --- /dev/null +++ b/casdk-docs/docs/architecture/overview.md @@ -0,0 +1,107 @@ +# Architecture Overview + +The Carbon Aware SDK is built with three tiers where each tier has its own set +of responsibilities. + +1. Consumer Tier +2. Business Logic Tier +3. Data Tier + +Each tier only has knowledge of its own responsibilities, and specific channels +of communication between adjacent tiers. This allows the SDK to switch to +different implementations withing the same tier without any necessary code +changes. + +![Tiers architecture diagram](../images/tiers-architecture.drawio.png) + +## Consumer Tier + +The consumer tier is the entry point for interacting with the SDK. It handles +taking the user input and deciding which handler(s) should handle processing the +input. There are currently 2 different consumers that can be used in the SDK + +1. A RESTful WebAPI that can be called using HTTP requests. +2. A command line tool that runs directly on a host machine. + +Both consumers access the same components in the tiers below. + +## Business Logic Tier + +The business logic tier functions as the processor, taking in the user input and +figuring out how to fulfill it. It is comprised of a set of handlers that know +what type of data they need and how to calculate the result. + +### Handlers + +Handlers have knowledge of the underlying data source interfaces in the data +tier. A Handler takes in consumer requests, calls the specified data source, and +performs any data aggregation required before returning the result to the +consumer. Each Handler is responsible for handling requests specific to a +functionality. + +Currently, the SDK provides 2 handlers for obtaining the carbon emissions data- +`EmissionsHandler` and `ForecastHandler` to handle requests for actual carbon +emissions and forecasted carbon emissions respectively. The `EmissionsHandler` +handles requests for various carbon emissions information. It can calculate the +average carbon emissions over a time period, or the best carbon emissions given +a set of locations. It can transform forecasted carbon emissions to suit +particular use-cases. It can also just deliver the emissions data points in a +standard schema without performing any calculations. The `ForecastHandler` is +responsible for getting the forecasted carbon emissions values from the +underlying datasource. It can filter the emissions forecast based on the window +size passed as an input and can also perform operations like finding the rolling +average of emission values for a give window size. In addition to the above +handlers, there is a `LocationHandler` which is responsible for retrieving all +the locations supported by the underlying data source. + +See the [c-sharp-client-library README](./c-sharp-client-library.md) for more +detailed information. + +## Data Tier + +The data tier is responsible for ingesting data into the SDK. It is comprised of +a set of data source interfaces representing the broad categories of data used +by the SDK. + +### Data Source Interface + +A data source interface defines all the necessary parameters and functions +needed to access that category of data. These definitions must be independent of +specific data sources and use abstracted input/output parameters expected from +the business logic tier. This abstraction enables multiple data sources to +extend a multiple interfaces and be switched out and configured based on the +needs of the operator. + +### Data Source Implementation + +A data source inherits from a single or multiple data source interfaces and does +the work of accessing a specific data provider. Each data source the information +specific to the data provider it is accessing, including any authentication +needs, the format of the request and response, etc. It is also responsible for +converting the request from the business logic tier into the required provider +request, and similarly, converting the provider response back into the expected +result. + +See the [data source README](./data-sources.md) for more detailed information. + +## Dependency Registration + +The SDK uses dependency injection to load the data sources based on set +environment variables. To register a new dependency, a new +ServiceCollectionExtension method must be defined. These dependencies are loaded +in a hierarchical structure such that: + +1. Each data source defines a `ServiceCollectionExtension` method. +2. All available data sources are registered in the `DataSource.Registration` + project. +3. The GSF library defines a `ServiceCollectionExtension` method where it + registers the data sources for the handlers to use. +4. The `Program.cs` file registers the GSF library classes at startup + +## Example Call Flow + +The swimlanes diagram below follows an example call through all 3 tiers of the +architecture. In this diagram, the _Client_ is a user of the SDK and the _Data +Provider_ is a source of raw data, such as [WattTime](https://www.wattime.org). + +![Tiers flow diagram](../images/overview-tiers-swimlanes.png) diff --git a/casdk-docs/docs/carbon-aware-cli.md b/casdk-docs/docs/carbon-aware-cli.md new file mode 100644 index 000000000..9347db472 --- /dev/null +++ b/casdk-docs/docs/carbon-aware-cli.md @@ -0,0 +1,538 @@ +# Carbon Aware CLI + +The CLI is best for use with systems you can not change the code in but can +invoke command line. For example - build pipelines. + +The CLI exposes the primary `getEmissionsByLocationsAndTime` SDK methods via +command line and outputs the results as json to stdout. + +> You can use the CLI via a docker image. + +- [Carbon Aware CLI](#carbon-aware-cli) + - [Build and Install](#build-and-install) + - [Using the CLI](#using-the-cli) + - [emissions](#emissions) + - [Description](#description) + - [Usage](#usage) + - [Options](#options) + - [Examples](#examples) + - [Single Location Emissions](#single-location-emissions) + - [Multiple Location Emissions](#multiple-location-emissions) + - [Emissions with Start and End Times](#emissions-with-start-and-end-times) + - [emissions-forecasts](#emissions-forecasts) + - [Description](#description) + - [Usage](#usage) + - [Options](#options) + - [Examples](#examples) + - [Single Location Current Forecast](#single-location-current-forecast) + - [Multiple Location Current Forecasts](#multiple-location-current-forecasts) + - [Filtered Data and Window Size Forecast](#filtered-data-and-window-size-forecast) + - [Historical Forecast](#historical-forecast) + +## Build and Install + +Build the CLI using the `dotnet publish` command: + +```bash +dotnet publish ./src/CarbonAware.CLI/src/CarbonAware.CLI.csproj -c Release -o +``` + +> By default this will build for your host operating system. To build for a +> platform other than your host platform you can specify the target runtime like +> this, using any valid +> [Runtime ID](https://docs.microsoft.com/en-us/dotnet/core/rid-catalog#using-rids) +> (EG `win-x64`, `linux-x64`, `osx-x64`): +> +> ```bash +> dotnet publish .\src\CarbonAware.CLI\src\CarbonAware.CLI.csproj -c Release -r --self-contained -o +> ``` + +## Using the CLI + +To use the CLI for the first time, navigate to your installation directory and +run the binary with the `-h` flag to see the help menu. + +On Windows: + +```bash +.\caw.exe -h +``` + +On MacOS/Linux: + +```bash +.\caw -h +``` + +## emissions + +### Description + +Retrieve emissions data from specified locations and time periods. + +### Usage + +`caw emissions [options]` + +### Options + +```text + -l, --location (REQUIRED) A named location + -s, --start-time Start time of emissions data + -e, --end-time End time of emissions data + -b, --best Filter results down to the best (typically lowest) data point. + -a, --average Outputs the weighted average of all data points within the start and end time boundaries. + -?, -h, --help Show help and usage information +``` + +### Examples + +#### Single Location Emissions + +command: + +```bash +.\caw.exe emissions -l eastus +``` + +output: + +```json +[ + { + "Location": "eastus", + "Time": "2022-08-30T12:45:11+00:00", + "Rating": 65, + "Duration": "08:00:00" + }, + { + "Location": "eastus", + "Time": "2022-08-30T20:45:11+00:00", + "Rating": 65, + "Duration": "08:00:00" + }, + // ... + { + "Location": "eastus", + "Time": "2022-09-06T04:45:11+00:00", + "Rating": 73, + "Duration": "08:00:00" + }, + { + "Location": "eastus", + "Time": "2022-09-06T12:45:11+00:00", + "Rating": 84, + "Duration": "08:00:00" + } +] +``` + +#### Multiple Location Emissions + +command: + +```bash +.\caw emissions -l eastus -l westus +``` + +output: + +```json +[ + { + "Location": "eastus", + "Time": "2022-08-30T12:45:11+00:00", + "Rating": 65, + "Duration": "08:00:00" + }, + { + "Location": "eastus", + "Time": "2022-08-30T20:45:11+00:00", + "Rating": 65, + "Duration": "08:00:00" + }, + // ... + { + "Location": "westus", + "Time": "2022-09-06T04:45:11+00:00", + "Rating": 73, + "Duration": "08:00:00" + }, + { + "Location": "westus", + "Time": "2022-09-06T12:45:11+00:00", + "Rating": 84, + "Duration": "08:00:00" + } +] +``` + +#### Emissions with Start and End Times + +command: + +```bash +.\caw emissions -l eastus --start-time 2022-07-01T00:00:00Z --end-time 2022-07-31T23:59:59Z --best +``` + +output: + +```json +[ + { + "Location": "eastus", + "Time": "2022-07-01T04:45:11+00:00", + "Rating": 65, + "Duration": "08:00:00" + }, + { + "Location": "eastus", + "Time": "2022-07-01T12:45:11+00:00", + "Rating": 65, + "Duration": "08:00:00" + }, + // ... + { + "Location": "eastus", + "Time": "2022-07-31T12:45:11+00:00", + "Rating": 73, + "Duration": "08:00:00" + }, + { + "Location": "eastus", + "Time": "2022-07-31T20:45:11+00:00", + "Rating": 84, + "Duration": "08:00:00" + } +] +``` + +#### Best Emissions + +command: + +```bash +.\caw emissions -l eastus -l westus --start-time 2022-07-01T00:00:00Z --end-time 2022-07-31T23:59:59Z --best +``` + +output: + +```json +[ + { + "Location": "eastus", + "Time": "2022-07-08T04:45:11+00:00", + "Rating": 48, + "Duration": "08:00:00" + } +] +``` + +#### Average Emissions + +command: + +```bash +.\caw emissions -l eastus -l westus --start-time 2022-07-09T00:00:00Z --end-time 2022-07-09T12:00:00Z --average +``` + +output: + +```json +[ + { + "Location": "eastus", + "Time": "2022-07-09T00:00:00+00:00", + "Rating": 79.357, + "Duration": "12:00:00" + }, + { + "Location": "westus", + "Time": "2022-07-09T00:00:00+00:00", + "Rating": 86.91243, + "Duration": "12:00:00" + } +] +``` + +## `emissions-forecasts` + +### Description + +Forecasted emissions + +### Usage + +`caw emissions-forecasts [options]` + +### Options + +```text + -l, --location (REQUIRED) A list of locations + --data-start-at Filter out forecasted data points before start at time. + --data-end-at Filter out forecasted data points after end at time. + -w, --window-size The estimated duration (in minutes) of the workload being forecasted. Defaults to the duration of a single forecast data point + --requested-at Datetime of a previously generated forecast. Returns the most current forecast if not provided. + -?, -h, --help Show help and usage information +``` + +### Examples + +#### Single Location Current Forecast + +command: + +```bash +.\caw emissions-forecasts -l northeurope +``` + +output: + +```json +[{ + "requestedAt": "2022-07-19T13:37:49+00:00", + "generatedAt": "2022-07-19T13:35:00+00:00", + "location": "northeurope", + "dataStartAt": "2022-07-19T14:00:00Z", + "dataEndAt": "2022-07-20T04:38:00Z", + "windowSize": 5, + "optimalDataPoint": { + "location": "IE", + "timestamp": "2022-07-19T18:45:00+00:00", + "duration": 5, + "value": 448.4451043375 + }, + "forecastData": [ + { + "location": "IE", + "timestamp": "2022-07-19T14:00:00+00:00", + "duration": 5, + "value": 532.02293146 + }, + ... + { + "location": "IE", + "timestamp": "2022-07-20T04:30:00+00:00", + "duration": 5, + "value": 535.7318741001667 + } + ] +}] +``` + +#### Multiple Location Current Forecasts + +command: + +```bash +.\caw emissions-forecasts -l eastus -l westus +``` + +output: + +```json +[ + { + "requestedAt": "2022-06-01T12:01:00+00:00" + "generatedAt": "2022-06-01T12:00:00+00:00", + "optimalDataPoint": { + "location": "PJM_ROANOKE", + "timestamp": "2022-06-01T16:45:00+00:00", + "duration": 5, + "value": 448.4451043375 + }, + "forecastData": [ ... ] // all relevant forecast data points + "location": "eastus", + "dataStartAt": "2022-06-01T14:05:00+00:00", + "dataEndAt": "2022-06-02T14:00:00+00:00", + "windowSize": 5, + }, + { + "requestedAt": "2022-06-01T12:01:00+00:00" + "generatedAt": "2022-06-01T12:00:00+00:00", + "optimalDataPoint": { + "location": "CAISO_NORTH", + "timestamp": "2022-06-13T09:25:00+00:00", + "duration": 5, + "value": 328.178478 + }, + "forecastData": [ ... ] // all relevant forecast data points + "location": "westus", + "dataStartAt": "2022-06-01T14:05:00+00:00", + "dataEndAt": "2022-06-02T14:00:00+00:00", + "windowSize": 5, + } +] +``` + +#### Filtered Data and Window Size Forecast + +> Note: For current forecasts, since the data filters must fall within the +> forecasted data points, it is advisable to create them dynamically. + +Example command: + +```bash +TIME_TWO_HOURS_FROM_NOW=$(date --date='2 hours' --utc --iso-8601='seconds') + +TIME_NINETEEN_HOURS_FROM_NOW=$(date --date='19 hours' --utc --iso-8601='seconds') + +.\caw emissions-forecasts -l northeurope -l westus --data-start-at TIME_TWO_HOURS_FROM_NOW --data-end-at TIME_NINETEEN_HOURS_FROM_NOW -w 10 +``` + +Example output: + +```json +[{ + "requestedAt": "2022-07-19T13:37:49+00:00", + "generatedAt": "2022-07-19T13:35:00+00:00", + "location": "northeurope", + "dataStartAt": "2022-07-19T15:37:49+00:00", + "dataEndAt": "2022-07-20T08:37:49+00:00", + "windowSize": 10, + "optimalDataPoint": { + "location": "IE", + "timestamp": "2022-07-19T18:45:00+00:00", + "duration": 10, + "value": 448.4451043375 + }, + "forecastData": [ + { + "location": "IE", + "timestamp": "2022-07-19T15:40:00+00:00", + "duration": 10, + "value": 532.02293146 + }, + ... + { + "location": "IE", + "timestamp": "2022-07-20T08:30:00+00:00", + "duration": 10, + "value": 535.7318741001667 + } + ] +}, +{ + "requestedAt": "2022-07-19T13:37:49+00:00", + "generatedAt": "2022-07-19T13:35:00+00:00", + "location": "westus", + "dataStartAt": "2022-07-19T15:37:49+00:00", + "dataEndAt": "2022-07-20T08:37:49+00:00", + "windowSize": 10, + "optimalDataPoint": { + "location": "CAISO_NORTH", + "timestamp": "2022-07-19T18:45:00+00:00", + "duration": 10, + "value": 502.02293146 + }, + "forecastData": [ + { + "location": "CAISO_NORTH", + "timestamp": "2022-07-19T15:40:00+00:00", + "duration": 10, + "value": 612.9132146 + }, + ... + { + "location": "CAISO_NORTH", + "timestamp": "2022-07-20T08:30:00+00:00", + "duration": 10, + "value": 523.172030157 + } + ] +}] +``` + +#### Historical Forecast + +command: + +```bash +.\caw emissions-forecasts -l northeurope -l westus --requested-at 2022-06-15T18:31:00Z +``` + +output: + +```json +[{ + "requestedAt": "2022-06-15T18:31:00+00:00", + "generatedAt": "2022-06-15T18:30:00+00:00", + "location": "northeurope", + "dataStartAt": "2022-06-15T18:35:00+00:00", + "dataEndAt": "2022-06-16T18:30:00+00:00", + "windowSize": 5, + "optimalDataPoint": { + "location": "IE", + "timestamp": "2022-06-15T23:40:00+00:00", + "duration": 5, + "value": 448.4451043375 + }, + "forecastData": [ + { + "location": "IE", + "timestamp": "2022-06-15T18:35:00+00:00", + "duration": 5, + "value": 532.02293146 + }, + ... + { + "location": "IE", + "timestamp": "2022-06-16T18:25:00+00:00", + "duration": 5, + "value": 535.7318741001667 + } + ] +}, +{ + "requestedAt": "2022-06-15T18:31:00+00:00", + "generatedAt": "2022-06-15T18:30:00+00:00", + "location": "westus", + "dataStartAt": "2022-06-15T18:35:00+00:00", + "dataEndAt": "2022-06-16T18:30:00+00:00", + "windowSize": 5, + "optimalDataPoint": { + "location": "CAISO_NORTH", + "timestamp": "2022-06-15T23:40:00+00:00", + "duration": 5, + "value": 423.4451043375 + }, + "forecastData": [ + { + "location": "CAISO_NORTH", + "timestamp": "2022-06-15T18:35:00+00:00", + "duration": 5, + "value": 482.02293146 + }, + ... + { + "location": "CAISO_NORTH", + "timestamp": "2022-06-16T18:25:00+00:00", + "duration": 5, + "value": 576.7318741008 + } + ] +}] +``` + +##### Locations + +command: `.\caw locations` + +output: + +```json +{ + "eastus": { + "Latitude": 37.3719, + "Longitude": -79.8164, + "Name": "eastus" + }, + ... + "switzerlandnorth":{ + "Latitude": 47.451542, + "Longitude": 8.564572, + "Name": "switzerlandnorth" + }, + ... +} +``` diff --git a/casdk-docs/docs/carbon-aware-github-action.md b/casdk-docs/docs/carbon-aware-github-action.md new file mode 100644 index 000000000..527e3f972 --- /dev/null +++ b/casdk-docs/docs/carbon-aware-github-action.md @@ -0,0 +1,10 @@ +# Carbon Aware Github Action + +Based on the CLI as docker image, the Github action allows to use the Carbon +Aware metrics as part of your deployment pipeline in Github. + +## Example + +Check out the +[sample Github Action pipeline](/.github/workflows/run-sdkCLI-githubaction.yml) +to see how it is used. diff --git a/casdk-docs/docs/carbon-aware-library.md b/casdk-docs/docs/carbon-aware-library.md new file mode 100644 index 000000000..9f920017a --- /dev/null +++ b/casdk-docs/docs/carbon-aware-library.md @@ -0,0 +1,493 @@ +# Carbon Aware Library + +The Carbon Aware SDK provides a C\# Client Library to get the marginal carbon +intensity for a given location and time period. The values reported in the Green +Software Foundation's specification for marginal carbon intensity (Grams per +Kilowatt Hour). + +**_Recommended_** - This user interface is best for when you need a consumable +version of the SDK as this library can be packaged into a nuget and consumed +locally. + +The library replicates the Web Api, CLI and SDK functionality, leveraging the +same configuration + +## Table of Contents + +- [Carbon Aware Library](#carbon-aware-library) + - [Table of Contents](#table-of-contents) + - [EmissionsHandler Functions](#emissionshandler-functions) + - [GetEmissionsDataAsync](#getemissionsdataasync) + - [GetBestEmissionsDataAsync](#getbestemissionsdataasync) + - [GetAverageCarbonIntensityAsync](#getaveragecarbonintensityasync) + - [ForecastHandler Functions](#forecasthandler-functions) + - [GetCurrentForecastAsync](#getcurrentforecastasync) + - [GetForecastByDateAsync](#getforecastbydateasync) + - [Data Sources](#data-sources) + - [WattTime](#watttime) + - [Locations](#locations) + - [Exception Handling](#exception-handling) + - [ElectricityMaps](#electricitymaps) + - [Locations](#locations) + - [Exception Handling](#exception-handling) + - [ElectricityMapsFree](#electricitymapsfree) + - [Locations](#locations) + - [Exception Handling](#exception-handling) + +## EmissionsHandler Functions + +The `EmissionsHandler` is responsible for all the functions that query the SDK +for `EmissionsData`. This includes both getting the data directly, or getting +the average carbon intensity from the data. There are currently 4 functions +managed by this handler: + +1. [GetEmissionsDataAsync](#getemissionsdataasync) +2. [GetBestEmissionsDataAsync](#getbestemissionsdataasync) +3. [GetAverageCarbonIntensityAsync](#getaveragecarbonintensityasync) + +### GetEmissionsDataAsync + +This function calculates the observed emission data by location for a specified +time period. The location is a required parameter and is the name of the data +region for the configured Cloud provider. If time period is not provided, it +retrieves all the data until the current time. + +`GetEmissionsDataAsync` has two signatures: one which takes a single location +and one which takes an array of locations. Both signatures return the same +response: an array of `EmissionsData` objects that contains the location, time +and the rating in g/kWh. + +#### _Signature 1: Single Location + Start + End_ + +Parameters: + +1. `location`: The string name of the data region for the configured Cloud + provider. +2. `startTime`: [Optional] The time at which the workload and corresponding + carbon usage begins. +3. `endTime`: [Optional] The time at which the workload and corresponding carbon + usage ends. + +Request: + +```csharp +var data = await this._emissionsHandler.GetEmissionsDataAsync( + "eastus", + DateTimeOffset(2022,1,2), + DateTimeOffset(2022,5,17) +); +``` + +Response: + +```csharp +[ + EmissionsData() + { + Location:"eastus" + Time: DateTimeOffset("2022-05-17T20:45:11.5092741+00:00"), + Rating: 70, + Duration: 60, + }, + ... +] +``` + +#### _Signature 2: Array of Locations + Start + End_ + +Parameters: + +1. `locations`: The string array of names of the data regions for the configured + Cloud provider. +2. `startTime`: [Optional] The time at which the workload and corresponding + carbon usage begins. +3. `endTime`: [Optional] The time at which the workload and corresponding carbon + usage ends. + +Request: + +```csharp +var data = await this._emissionsHandler.GetEmissionsDataAsync( + string[]{"eastus", "westus"}, + DateTimeOffset(2022,1,2), + DateTimeOffset(2022,5,17) +); +``` + +Response: + +```csharp +[ + EmissionsData() + { + Location:"eastus" + Time: DateTimeOffset("2022-05-17T20:45:11.5092741+00:00"), + Rating: 70, + Duration: 60, + }, + EmissionsData() + { + Location:"west" + Time: DateTimeOffset("2022-05-17T20:45:11.5092741+00:00"), + Rating: 52, + Duration: 60, + }, + ... +] +``` + +### GetBestEmissionsDataAsync + +This function calculates the best observed emission data by an array of +locations for a specified time period. + +Location is a required parameter and is an array of the names of the data region +for the configured Cloud provider. If time period is not provided, it retrieves +all the data until the current time. + +`GetBestEmissionsDataAsync` has two signatures: one which takes a single +location and one which takes an array of locations. Both signatures return the +same response: an array of `EmissionsData` objects that contains the location, +time and the rating in g/kWh. + +#### _Signature 1: Location + Start + End_ + +Parameters: + +1. `location`: The string name of the data regions for the configured Cloud + provider. +2. `startTime`: [Optional] The time at which the workload and corresponding + carbon usage begins. +3. `endTime`: [Optional] The time at which the workload and corresponding carbon + usage ends. + +```csharp +var data = await this._emissionsHandler.GetBestEmissionsDataAsync( + "eastus", + DateTimeOffset(2022,1,2), + DateTimeOffset(2022,5,17) +); +``` + +The response is an array of `EmissionsData` objects that contains the location, +time and the rating in g/kWh. + +```csharp +[ + EmissionsData() + { + Location:"eastus" + Time: DateTimeOffset("2022-05-17T20:45:11.5092741+00:00"), + Rating: 70, + Duration: 60, + }, + ... +] +``` + +#### _Signature 2: Multiple Locations + Start + End_ + +Parameters: + +1. `locations`: The string array of names of the data regions for the configured + Cloud provider. +2. `startTime`: [Optional] The time at which the workload and corresponding + carbon usage begins. +3. `endTime`: [Optional] The time at which the workload and corresponding carbon + usage ends. + +```csharp +var data = await this._emissionsHandler.GetBestEmissionsDataAsync( + string[]{"eastus", "westus"}, + DateTimeOffset(2022,1,2), + DateTimeOffset(2022,5,17) +); +``` + +The response is an array of `EmissionsData` objects that contains the location, +time and the rating in g/kWh. + +```csharp +[ + EmissionsData() + { + Location:"westus" + Time: DateTimeOffset("2022-05-17T20:45:11.5092741+00:00"), + Rating: 70, + Duration: 60, + }, + ... +] +``` + +### GetAverageCarbonIntensityAsync + +This function retrieves the measured carbon intensity data for a given location +between the time boundaries and calculates the average carbon intensity during +that period. Location is a required parameter and is the name of the data region +for the configured Cloud provider. This function is useful for reporting the +measured carbon intensity for a specific time period in a specific location. + +Parameters: + +1. `location`: The string name of the data region for the configured Cloud + provider. +2. `start`: The time at which the workflow we are measuring carbon intensity for + started +3. `end`: The time at which the workflow we are measuring carbon intensity for + ended + +Request: + +```csharp +var data = await this._emissionsHandler.GetAverageCarbonIntensityAsync( + "eastus", + DateTimeOffset(2022,7,19,14,0,0,Timespan.Zero), + DateTimeOffset(2022,7,19,18,0,0,Timespan.Zero) +); +``` + +The response is a single double value representing the calculated average +marginal carbon intensity g/kWh. + +```csharp +345.434 +``` + +## ForecastHandler Functions + +The `ForecastHandler` is responsible for all the functions that query the SDK +for `EmissionsForecast`. There are currently 2 functions managed by this +handler: + +1. [GetCurrentForecastAsync](#getcurrentforecastasync) +2. [GetForecastByDateAsync](#getforecastbydateasync) + +### GetCurrentForecastAsync + +This function fetches only the most recently generated forecast for all provided +locations. It uses the "dataStartAt" and "dataEndAt" parameters to scope the +forecasted data points (if available for those times). If no start or end time +boundaries are provided, the entire forecast dataset is used. The scoped data +points are used to calculate average marginal carbon intensities of the +specified "windowSize" and the optimal marginal carbon intensity window is +identified. + +The forecast data represents what the data source predicts future marginal +carbon intensity values to be, not actual measured emissions data (as future +values cannot be known). + +This endpoint is useful for determining if there is a more carbon-optimal time +to use electricity predicted in the future. + +Parameters: + +1. `location`: This is a required parameter and is an array of the names of the + data region for the configured Cloud provider. +2. `dataStartAt`: Start time boundary of the current forecast data points. + Ignores current forecast data points before this time. Must be within the + forecast data point timestamps. Defaults to the earliest time in the forecast + data. +3. `dataEndAt`: End time boundary of the current forecast data points. Ignores + current forecast data points after this time. Must be within the forecast + data point timestamps. Defaults to the latest time in the forecast data. If + neither `dataStartAt` nor `dataEndAt` are provided, all forecasted data + points are used in calculating the optimal marginal carbon intensity window. +4. `windowSize`: The estimated duration (in minutes) of the workload. Defaults + to the duration of a single forecast data point. + +```csharp +var data = await this._forecastHandler.GetCurrentForecastAsync( + "northeurope", + DateTimeOffset(2022,7,19,14,0,0,TimeSpan.Zero), + DateTimeOffset(2022,7,20,4,38,0,TimeSpan.Zero), + 10 +); +``` + +The response is an array of `EmissionsForecast` objects (one per requested +location) with their optimal marginal carbon intensity windows. + +```csharp +[ + EmissionsForecast() + { + RequestedAt: DateTimeOffset("2022-07-19T13:37:49+00:00"), + GeneratedAt: DateTimeOffset("2022-07-19T13:35:00+00:00"), + OptimalDataPoints: [ + EmissionsData() + { + Location: "IE", + Time: DateTimeOffset("2022-07-19T18:45:00+00:00"), + Duration: 10, + Rating: 448.4451043375 + } + ], + EmissionsDataPoints: [ + EmissionsData() + { + Location: "IE", + Time: DateTimeOffset("2022-07-19T14:00:00+00:00"), + Duration: 10, + Rating: 532.02293146 + }, + ... + EmissionsData() + { + Location: "IE", + Time: DateTimeOffset("2022-07-20T04:25:00+00:00"), + Duration: 10, + Rating: 535.7318741001667 + } + ] + } +] +``` + +### GetForecastByDateAsync + +This function takes a requests for historical forecast data, fetches it, and +calculates the optimal marginal carbon intensity window. This endpoint is useful +for back-testing what one might have done in the past, if they had access to the +current forecast at the time. + +Parameters: + +1. `location`: This is a required parameter and is the name of the data region + for the configured Cloud provider. +2. `dataStartAt`: Start time boundary of the forecast data points. Ignores + forecast data points before this time. Must be within the forecast data point + timestamps. Defaults to the earliest time in the forecast data. +3. `dataEndAt`: End time boundary of the forecast data points. Ignores forecast + data points after this time. Must be within the forecast data point + timestamps. Defaults to the latest time in the forecast data. +4. `requestedAt`: This is a required parameter and is the historical time used + to fetch the most recent forecast as of that time. +5. `windowSize`: The estimated duration (in minutes) of the workload. Defaults + to the duration of a single forecast data point + +If neither `dataStartAt` nor `dataEndAt` are provided, all forecasted data +points are used in calculating the optimal marginal carbon intensity window. + +```csharp +var data = await this._forecastHandler.GetForecastByDateAsync( + "northeurope", + DateTimeOffset(2022,7,19,14,0,0,TimeSpan.Zero), + DateTimeOffset(2022,7,20,4,38,0,TimeSpan.Zero), + DateTimeOffset(2022,7,19,13,30,0,TimeSpan.Zero), + 10 +); +``` + +The response is an `EmissionsForecast` object with the optimal marginal carbon +intensity window. + +```csharp +EmissionsForecast() +{ + RequestedAt: DateTimeOffset("2022-07-19T13:30:00+00:00"), + GeneratedAt: DateTimeOffset("2022-07-19T13:35:00+00:00"), + OptimalDataPoints: [ + EmissionsData() + { + Location: "IE", + Time: DateTimeOffset("2022-07-19T18:45:00+00:00"), + Duration: 10, + Rating: 448.4451043375 + } + ], + EmissionsDataPoints: [ + EmissionsData() + { + Location: "IE", + Time: DateTimeOffset("2022-07-19T14:00:00+00:00"), + Duration: 10, + Rating: 532.02293146 + }, + ... + EmissionsData() + { + Location: "IE", + Time: DateTimeOffset("2022-07-20T04:25:00+00:00"), + Duration: 10, + Rating: 535.7318741001667 + } + ] +} +``` + +## Data Sources + +### WattTime + +#### Locations + +Each WattTime emissions data point is associated with a particular named +balancing authority. For transparency, this value is also used in +`EmissionsData` response objects. It is not overwritten to match the named +datacenter provided by any request. + +> "A balancing authority ensures, in real time, that power system demand and +> supply are finely balanced. This balance is needed to maintain the safe and +> reliable operation of the power system. If demand and supply fall out of +> balance, local or even wide-area blackouts can result." +> +> See [this post](https://www.eia.gov/todayinenergy/detail.php?id=27152) on +> balancing authories from the EIA to learn more. + +#### Exception Handling + +If WattTime responds with a 4XX or 5XX status code the WattTime Data Source will +forward the response code and message back to the caller. Refer to the +[current WattTime documentation](https://www.watttime.org/api-documentation/) +for the most up-to-date information about possible error codes. + +#### Example Emissions Call Using WattTime + +The swimlanes diagram below follows an example request for emissions data using +WattTime as the data source provider. In this diagram, the _Client_ is a user of +the SDK and the _WattTimeService_ is the [WattTime](https://www.wattime.org) +API. + +![webapi to watttime flow diagram](./images/webapi-swimlanes.png) + +### ElectricityMaps + +#### Locations + +Each ElectricityMaps emissions data point is associated with a particular named +zone name. While the ElectricityMaps endpoint supports calling with lat/long +geoposition as well, the result will always be a corresponding zone name. They +provide a +[route on their API](https://static.electricitymaps.com/api/docs/index.html#zones) +which can be queried to list all the zone names you have access to given your +token + +#### Exception Handling + +If ElectricityMaps responds with a 4XX or 5XX status code the ElectricityMaps +Data Source will forward the response code and message back to the caller. Refer +to the +[ElectricityMapsHttpClientException](../src/CarbonAware.DataSources/CarbonAware.DataSources.ElectricityMaps/src/Client/ElectricityMapsClientHttpException.cs) +class for documentation on expected error codes. + +### ElectricityMapsFree + +#### Locations + +Each ElectricityMapsFree emissions data point is associated with a particular +named country code. While the ElectricityMapsFree endpoint supports calling with +lat/long geoposition as well, the result will always be a corresponding country +code. +They provide a +[route on their parent API (ElectricityMaps)](https://static.electricitymaps.com/api/docs/index.html#zones) +which can be queried to list all the country codes you have access to given your +token. + +#### Exception Handling + +If ElectricityMapsFree responds with a 4XX or 5XX status code the +ElectricityMapsFree Data Source will forward the response code and message back +to the caller. Refer to the +[ElectricityMapsFreeHttpClientException](../src/CarbonAware.DataSources/CarbonAware.DataSources.ElectricityMapsFree/src/Client/ElectricityMapsFreeClientHttpException.cs) +class for documentation on expected error codes. diff --git a/casdk-docs/docs/carbon-aware-tools.md b/casdk-docs/docs/carbon-aware-tools.md new file mode 100644 index 000000000..c93d9f7b9 --- /dev/null +++ b/casdk-docs/docs/carbon-aware-tools.md @@ -0,0 +1,79 @@ +# Carbon Aware Tools + +## Test Data Generators + +There are 2 data generators that help to generate the data files for testing +purposes. These created data for all regions in the respective cloud providers, +and can be used for demos or recreating more test data. + +### AWS Datacenter Test Emissions Generator + +The `src\CarbonAware.Tools\CarbonAware.Tools.AWSRegionTestDataGenerator` project +generates a json file to be used by the basicJsonPlugin that includes all AWS +datacenter regions. + +The `aws-regions.json` file it uses is downloaded from the official Amazon Web +Services website. + +### Azure Datacenter Test Emissions Generator + +The `src\CarbonAware.Tools\CarbonAware.Tools.AzureRegionTestDataGenerator` +project generates a json file to be used by the basicJsonPlugin that includes +all Azure data regions. + +The `azure-regions.json` file it uses is generated by the official Microsoft +Azure CLI. + +## CarbonAware.LocationSources + +The `LocationSource` converts named locations to their corresponding geoposition +coordinates based on JSON files containing those values. + +### Generating Azure locations for `LocationSource` + +To generate a new version of the `src/data/location-sources/azure-regions.json` +file, follow these steps: + +1. Install the [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/) and + [jq](https://stedolan.github.io/jq/download/). + +2. [Login to your Azure subscription](https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli?view=azure-cli-latest). + +3. Get a list of Azure regions metadata in the proper format: + + ```bash + az account list-locations --query '[?latitude != null].{Name:name,Latitude:latitude,Longitude:longitude}' | jq '[foreach .[] as $x ({}; . + ($x | {(.Name): { Latitude, Longitude, Name } }); .)] | last(.[])' >> azure-regions.json + ``` + +4. Copy the results and save it to `src/data/location-sources/` + +### Converting v1.0.0 location source files to the latest format + +Use the following `jq` command to covert from the v1.0.0 location source JSON +array format + +```json +[ + { + "RegionName": "myRegion", + "Latitude": 123.456, + "Longitude": 78.9 + } +] +``` + +to the new JSON object format + +```json +{ + "myRegion": { + "Name": "myLocationName", + "Latitude": 123.456, + "Longitude": 78.9 + } +} +``` + +```bash +cat azure-regions.json | jq '[foreach $regions[] as $x ({}; . + ($x | {(.RegionName): { Latitude, Longitude, "Name": .RegionName } }); .)] | last(.[])' +``` diff --git a/casdk-docs/docs/carbon-aware-webapi.md b/casdk-docs/docs/carbon-aware-webapi.md new file mode 100644 index 000000000..e71f76d22 --- /dev/null +++ b/casdk-docs/docs/carbon-aware-webapi.md @@ -0,0 +1,573 @@ +# Carbon Aware WebApi + +The Carbon Aware SDK provides an API to get the marginal carbon intensity for a +given location and time period. The values reported in the Green Software +Foundation's specification for marginal carbon intensity (Grams per Kilowatt +Hour). + +**_Highly Recommended_** - This user interface is best for when you can change +the code, and deploy separately. This also allows you to manage the Carbon Aware +logic independently of the system using it. + +The WebApi replicates the CLI and SDK functionality, leveraging the same +configuration and providing a REST end point with Swagger/OpenAPI definition for +client generation + +## Table of Contents + +- [Carbon Aware WebApi](#carbon-aware-webapi) + - [Table of Contents](#table-of-contents) + - [Endpoints](#endpoints) + - [GET emissions/bylocation](#get-emissionsbylocation) + - [GET emissions/bylocations](#get-emissionsbylocations) + - [GET emissions/bylocations/best](#get-emissionsbylocationsbest) + - [GET emissions/forecasts/current](#get-emissionsforecastscurrent) + - [POST emissions/forecasts/batch](#post-emissionsforecastsbatch) + - [GET emissions/average-carbon-intensity](#get-emissionsaverage-carbon-intensity) + - [POST emissions/average-carbon-intensity/batch](#post-emissionsaverage-carbon-intensitybatch) + - [GET /locations](#get-locations) + - [Error Handling](#error-handling) + - [Autogenerate WebAPI](#autogenerate-webapi) + - [Data Sources](#data-sources) + - [WattTime](#watttime) + - [Locations](#watttime-locations) + - [Exception Handling](#watttime-exception-handling) + - [Example Emissions Call Using WattTime](#example-emissions-call-using-watttime) + - [ElectricityMaps](#electricitymaps) + - [Locations](#electricitymaps-locations) + - [Exception Handling](#electricitymaps-exception-handling) + - [ElectricityMapsFree](#electricitymapsfree) + - [Locations](#locations) + - [Exception Handling](#exception-handling) + +## Endpoints + +### GET emissions/bylocation + +This endpoint calculates the observed emission data by location for a specified +time period. + +Location is a required parameter and is name of the data region for the +configured Cloud provider. If time period is not provided, it retrieves +available data until the current time. + +```text +https:///emissions/bylocation?location=useast&time=2022-01-01&toTime=2022-05-17 +``` + +The response is an array of EmissionsData objects that contains the location, +time and the rating in g/kWh + +```json +[ + { + "location": "eastus", + "time": "2022-05-17T20:45:11.5092741+00:00", + "rating": 70 + } +] +``` + +### GET emissions/bylocations + +This endpoint calculates the observed emission data by an array of locations for +a specified time period + +Location is a required parameter and is an array of the names of the data region +for the configured Cloud provider. If time period is not provided, it retrieves +all the data until the current time. + +```text +https:///emissions/bylocations?locations=eastus&locations=westus&time=2022-01-01&toTime=2022-05-17 +``` + +The response is an array of EmissionsData objects that contains the location, +time and the rating in g/kWh. + +```json +[ + { + "location":"eastus" + "time":"2022-05-17T20:45:11.5092741+00:00", + "rating":70 + }, + { + "location":"westus" + "time":"2022-05-17T20:45:11.5092741+00:00", + "rating":64 + } +] +``` + +### GET emissions/bylocations/best + +This endpoint calculates the best observed emission data by an array of +locations for a specified time period + +Location is a required parameter and is an array of the names of the data region +for the configured Cloud provider. If time period is not provided, it retrieves +all the data until the current time. + +```text +https:///emissions/bylocations/best?locations=eastus&locations=westus&time=2022-01-01&toTime=2022-05-17 +``` + +The response is an array of EmissionsData objects that contains the location, +time and the rating in g/kWh. + +```json +[ + { + "location":"eastus" + "time":"2022-05-17T20:45:11.5092741+00:00", + "rating":70 + } +] +``` + +### GET emissions/forecasts/current + +This endpoint fetches only the most recently generated forecast for all provided +locations. It uses the "dataStartAt" and "dataEndAt" parameters to scope the +forecasted data points (if available for those times). If no start or end time +boundaries are provided, the entire forecast dataset is used. The scoped data +points are used to calculate average marginal carbon intensities of the +specified "windowSize" and the optimal marginal carbon intensity window is +identified. + +The forecast data represents what the data source predicts future marginal +carbon intesity values to be, not actual measured emissions data (as future +values cannot be known). + +This endpoint is useful for determining if there is a more carbon-optimal time +to use electicity predicted in the future. + +Parameters: + +1. `location`: This is a required parameter and is an array of the names of the + data region for the configured Cloud provider. +2. `dataStartAt`: Start time boundary of the current forecast data points. + Ignores current forecast data points before this time. Must be within the + forecast data point timestamps. Defaults to the earliest time in the forecast + data. +3. `dataEndAt`: End time boundary of the current forecast data points. Ignores + current forecast data points after this time. Must be within the forecast + data point timestamps. Defaults to the latest time in the forecast data. If + neither `dataStartAt` nor `dataEndAt` are provided, all forecasted data + points are used in calculating the optimal marginal carbon intensity window. +4. `windowSize`: The estimated duration (in minutes) of the workload. Defaults + to the duration of a single forecast data point. + +```text +https:///emissions/forecasts/current?location=northeurope&dataStartAt=2022-07-19T14:00:00Z&dataEndAt=2022-07-20T04:38:00Z&windowSize=10 +``` + +The response is an array of forecasts (one per requested location) with their +optimal marginal carbon intensity windows. + +```json +[ + { + "requestedAt": "2022-07-19T13:37:49+00:00", + "generatedAt": "2022-07-19T13:35:00+00:00", + "location": "northeurope", + "dataStartAt": "2022-07-19T14:00:00Z", + "dataEndAt": "2022-07-20T04:38:00Z", + "windowSize": 10, + "optimalDataPoint": { + "location": "IE", + "timestamp": "2022-07-19T18:45:00+00:00", + "duration": 10, + "value": 448.4451043375 + }, + "forecastData": [ + { + "location": "IE", + "timestamp": "2022-07-19T14:00:00+00:00", + "duration": 10, + "value": 532.02293146 + }, + ... + { + "location": "IE", + "timestamp": "2022-07-20T04:25:00+00:00", + "duration": 10, + "value": 535.7318741001667 + } + ] + } +] +``` + +### POST emissions/forecasts/batch + +This endpoint takes a batch of requests for historical forecast data, fetches +them, and calculates the optimal marginal carbon intensity windows for each +using the same parameters available to the '/emissions/forecasts/current' +endpoint. + +This endpoint is useful for back-testing what one might have done in the past, +if they had access to the current forecast at the time. + +Parameters: + +1. requestedForecasts: Array of requested forecasts. Each requested forecast + contains + - `requestedAt`: This is a required parameter and is the historical time used + to fetch the most recent forecast as of that time. + - `location`: This is a required parameter and is the name of the data region + for the configured Cloud provider. + - `dataStartAt`: Start time boundary of the forecast data points. Ignores + forecast data points before this time. Must be within the forecast data + point timestamps. Defaults to the earliest time in the forecast data. + - `dataEndAt`: End time boundary of the forecast data points. Ignores + forecast data points after this time. Must be within the forecast data + point timestamps. Defaults to the latest time in the forecast data. + - `windowSize`: The estimated duration (in minutes) of the workload. Defaults + to the duration of a single forecast data point + +If neither `dataStartAt` nor `dataEndAt` are provided, all forecasted data +points are used in calculating the optimal marginal carbon intensity window. + +```json +[ + { + "location": "eastus", + "dataStartAt": "2022-06-01T14:00:00Z", + "dataEndAt": "2022-06-01T18:00:00Z", + "windowSize": 30, + "requestedAt": "2022-06-01T12:01:00Z" + }, + { + "location": "westus", + "dataStartAt": "2022-06-13T08:00:00Z", + "dataEndAt": "2022-06-13T10:00:00Z", + "windowSize": 30, + "requestedAt": "2022-06-13T6:05:00Z" + } +] +``` + +The response is an array of forecasts (one per requested location) with their +optimal marginal carbon intensity windows. + +```json +[ + { + "generatedAt": "2022-06-01T12:00:00+00:00", + "optimalDataPoint": { + "location": "IE", + "timestamp": "2022-06-01T16:45:00+00:00", + "duration": 10, + "value": 448.4451043375 + }, + "forecastData": [ ... ] // all relevant forecast data points + "requestedAt": "2022-06-01T12:01:00" + "location": "eastus", + "dataStartAt": "2022-06-01T14:00:00Z", + "dataEndAt": "2022-06-01T18:00:00Z", + "windowSize": 30, + }, + { + "generatedAt": "2022-06-13T06:05:00+00:00", + "optimalDataPoint": { + "location": "IE", + "timestamp": "2022-06-13T09:25:00+00:00", + "duration": 10, + "value": 328.178478 + }, + "forecastData": [ ... ] // all relevant forecast data points + "requestedAt": "2022-06-13T06:05:00" + "location": "westus", + "dataStartAt": "2022-06-13T08:00:00Z", + "dataEndAt": "2022-06-13T10:00:00Z", + "windowSize": 30, + } +] +``` + +### GET emissions/average-carbon-intensity + +This endpoint retrieves the measured carbon intensity data between the time +boundaries and calculates the average carbon intensity during that period. +Location is a required parameter and is the name of the data region for the +configured Cloud provider. + +This endpoint is useful for reporting the measured carbon intensity for a +specific time period in a specific location. + +Parameters: + +1. `location`: This is a required parameter and is the string name of the data + region for the configured Cloud provider. +2. `startTime`: The time at which the workload and corresponding carbon usage + begins. +3. `endTime`: The time at which the workload and corresponding carbon usage + ends. + +```text +https:///emissions/average-carbon-intensity?location=eastus&startTime=2022-07-19T14:00:00Z&endTime=2022-07-19T18:00:00Z +``` + +The response is a single object that contains the information about the request +and the average marginal carbon intensity + +```json +{ + "location": "eastus", + "startTime": "2022-07-19T14:00:00Z", + "endTime": "2022-07-19T18:00:00Z", + "carbonIntensity": 345.434 +} +``` + +### POST emissions/average-carbon-intensity/batch + +This endpoint takes an array of request objects, each with their own location +and time boundaries, and calculates the average carbon intensity for that +location and time period. + +This endpoint only supports batching across a single location with different +time boundaries. If multiple locations are provided, an error is returned. For +each item in the request array, the application returns a corresponding object +containing the location, time boundaries, and average marginal carbon intensity. + +Parameters: + +1. requestedCarbonIntensities: Array of requested carbon intensities. Each + requested carbon intensity contains + - `location`: This is a required parameter and is the name of the data region + for the configured Cloud provider. + - `startTime`: The time at which the workflow we are requesting carbon + intensity for started. + - `endTime`: The time at which the workflow we are requesting carbon + intensity for ended. + +```json +[ + { + "location": "eastus", + "startTime": "2022-05-01T14:00:00", + "endTime": "2022-05-01T18:00:00" + }, + { + "location": "eastus", + "startTime": "2022-06-01T14:00:00", + "endTime": "2022-06-01T18:00:00" + }, + { + "location": "eastus", + "startTime": "2022-07-01T14:00:00", + "endTime": "2022-07-01T18:00:00" + } +] +``` + +The response is an array of CarbonIntensityDTO objects which each have a +location, start time, end time, and the average marginal carbon intensity over +that time period. + +```json +[ + { + "carbonIntensity": 32.935208333333335, + "location": "eastus", + "startTime": "2022-05-01T14:00:00-04:00", + "endTime": "2022-05-01T18:00:00-04:00" + }, + { + "carbonIntensity": 89.18215277777779, + "location": "eastus", + "startTime": "2022-06-01T14:00:00-04:00", + "endTime": "2022-06-01T18:00:00-04:00" + }, + { + "carbonIntensity": 10.416875, + "location": "eastus", + "startTime": "2022-07-01T14:00:00-04:00", + "endTime": "2022-07-01T18:00:00-04:00" + } +] +``` + +### GET /locations + +This endpoint lists all the supported locations that the datasources potentially +can have access to. This information is coming from the `location-source/json` +files, that contain dictionaries in the form of , for instance: + +```json +{ + "eastus": { + "Latitude": 37.3719, + "Longitude": -79.8164, + "Name": "eastus" + }, + ... + "switzerlandnorth":{ + "Latitude": 47.451542, + "Longitude": 8.564572, + "Name": "switzerlandnorth" + } +} +``` + +`Emissions` and `Forecasts` endpoints would use the location's `key` name +returned by the `emssions/locations` endpoint. + +**Note**: If there is **_a location key name_** collision while loading two or +more location json files and there is no `LocationDataSourcesConfiguration` +`Prefix` and/or `Delimiter` settings, the system would change the collision key +name by appending an underscore character and a sequence number to it (i.e. +``**_\_seqnumber_**). For instance two location json files having +`swedencentral` as key, after loading, it would become: + +```json +{ + "swedencentral": { + "Latitude": 60.67488, + "Longitude": 17.14127, + "Name":"swedencentral" + }, + ... + "swedencentral_1": { // key collision. key renamed. + "Latitude": null, + "Longitude": null, + "Name": "SE" + }, + ... +} +``` + +If there is a third file with the same key name, it would be `swedencentral_2` +and so on. This information is not persisted, but now the user can make requests +using `swedencentral` and/or `swedencentral_1`. Also there are log **_warning_** +entries when this scenerario occurs to help the user to understand what key +renaming happened. + +```sh +warn: Location key swedencentral from ... already exists. Creating new key. +... +warn: New key swedencentral_1 generated from swedencentral +CarbonAware.LocationSources.LocationSource: Warning: New key swedencentral_1 generated from swedencentral +``` + +## Error Handling + +The WebAPI leveraged the +[.Net controller filter pipeline](https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-6.0) +to ensure that all requests respond with a consistent JSON schema. + +![.Net controller filter pipeline image](https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters/_static/filter-pipeline-2.png?view=aspnetcore-6.0) + +Controllers are responsible for managing the "Success" responses. If an error +occurs in the WebAPI code and an unhandled exception is thrown, the +[custom Exception Filter](./Filters/HttpResponseExceptionFilter.cs) will manage +converting that exception into the appropriate JSON response. NOTE: The +Exception Filter is only used for unhandled exceptions. If the exception is +caught and handled by the WebAPI code, the controller will continue to manage +the response. + +The .Net framework will automatically respond to validation errors with a +[ValidationProblemDetails](https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.validationproblemdetails?view=aspnetcore-6.0) +object. Using the Exception Filter class enables the WebAPI to consistently +respond with the `ValidationProblemDetails` error schema in all error cases and +take advantage of error handling automatically provided by the framework. + +![WebAPI Error Handling Flow Chart](./images/web-api-error-handling-flow.png) + +## Autogenerate WebAPI + +Using the following steps, it is possible to get the CarbonAware WebApi OpenAPI +specification + +1. Make sure the current directory is `/src/` + + ```sh + dotnet restore + cd CarbonAware.WebApi/src + dotnet tool restore + dotnet build --configuration Release --no-restore + dotnet tool run swagger tofile --output ./wwwroot/api/v1/swagger.yaml --yaml bin/Release/net6.0/CarbonAware.WebApi.dll v1 + ``` +1. The `CarbonAware.WebApi/src/wwwroot/api/v1/swagger.yaml` file contains the supported + OpenApi specification. +1. Use for instance [swagger editor](https://editor.swagger.io) to see and try + the endpoint routes. + +## Data Sources + +### WattTime + +#### WattTime Locations + +Each WattTime emissions data point is associated with a particular named +balancing authority. For transparency, this value is also used in +`EmissionsData` response objects. It is not overwritten to match the named +datacenter provided by any request. + +> "A balancing authority ensures, in real time, that power system demand and +> supply are finely balanced. This balance is needed to maintain the safe and +> reliable operation of the power system. If demand and supply fall out of +> balance, local or even wide-area blackouts can result." +> +> See [this post](https://www.eia.gov/todayinenergy/detail.php?id=27152) on +> balancing authories from the EIA to learn more. + +#### WattTime Exception Handling + +If WattTime responds with a 4XX or 5XX status code the WattTime Data Source will +forward the response code and message back to the caller. Refer to the +[current WattTime documentation](https://www.watttime.org/api-documentation/) +for the most up-to-date information about possible error codes. + +#### Example Emissions Call Using WattTime + +The swimlanes diagram below follows an example request for emissions data using +WattTime as the data source provider. In this diagram, the _Client_ is a user of +the SDK and the _WattTimeService_ is the [WattTime](https://www.wattime.org) +API. + +![webapi to watttime flow diagram](./images/webapi-swimlanes.png) + +### ElectricityMaps + +#### ElectricityMaps Locations + +Each ElectricityMaps emissions data point is associated with a particular named +zone. While the ElectricityMaps endpoint supports calling with lat/long +geoposition as well, the result will always be a corresponding zone name. They +provide a +[route on their API](https://static.electricitymaps.com/api/docs/index.html#zones) +which can be queried to list all the zone names you have access to given your +token + +#### ElectricityMaps Exception Handling + +If ElectricityMaps responds with a 4XX or 5XX status code the ElectricityMaps +Data Source will forward the response code and message back to the caller. Refer +to the +[ElectricityMapsHttpClientException](../src/CarbonAware.DataSources/CarbonAware.DataSources.ElectricityMaps/src/Client/ElectricityMapsClientHttpException.cs) +class for documentation on expected error codes. + +### ElectricityMapsFree + +#### Locations + +Each ElectricityMapsFree emissions data point is associated with a particular +named country code. While the ElectricityMapsFree endpoint supports calling with +lat/long geoposition as well, the result will always be a corresponding country +code. +They provide a +[route on their parent API (ElectricityMaps)](https://static.electricitymaps.com/api/docs/index.html#zones) +which can be queried to list all the country codes you have access to given your +token. + +#### Exception Handling + +If ElectricityMapsFree responds with a 4XX or 5XX status code the +ElectricityMapsFree Data Source will forward the response code and message back +to the caller. Refer to the +[ElectricityMapsFreeHttpClientException](../src/CarbonAware.DataSources/CarbonAware.DataSources.ElectricityMapsFree/src/Client/ElectricityMapsFreeClientHttpException.cs) +class for documentation on expected error codes. diff --git a/casdk-docs/docs/configuration.md b/casdk-docs/docs/configuration.md new file mode 100644 index 000000000..7453b8e82 --- /dev/null +++ b/casdk-docs/docs/configuration.md @@ -0,0 +1,616 @@ +# Configuration + +- [Configuration](#configuration) + - [Logging](#logging) + - [DataSources](#datasources) + - [WattTime Configuration](#watttime-configuration) + - [username](#username) + - [password](#password) + - [baseUrl](#baseurl) + - [Proxy](#proxy) + - [WattTime Caching BalancingAuthority](#watttime-caching-balancingauthority) + - [Json Configuration](#json-configuration) + - [ElectricityMaps Configuration](#electricitymaps-configuration) + - [API Token Header](#api-token-header) + - [API Token](#api-token) + - [BaseUrl](#baseurl) + - [Emission Factor Type](#emission-factor-type) + - [Disable Estimations](#disable-estimations) + - [ElectricityMapsFree Configuration](#electricitymapsfree-configuration) + - [API Token](#api-token) + - [BaseUrl](#baseurl) + - [CarbonAwareVars](#carbonawarevars) + - [Tracing and Monitoring Configuration](#tracing-and-monitoring-configuration) + - [Verbosity](#verbosity) + - [Web API Prefix](#web-api-prefix) + - [LocationDataSourcesConfiguration](#locationdatasourcesconfiguration) +- [Sample Configurations](#sample-configurations) + - [Configuration for Emissions data Using WattTime](#configuration-for-emissions-data-using-watttime) + - [Configuration for Forecast data Using ElectricityMaps](#configuration-for-forecast-data-using-electricitymaps) + - [Configuration for Emissions data using ElectricityMaps and Forecast data using WattTime](#configuration-for-emissions-data-using-electricitymaps-and-forecast-data-using-watttime) + - [Configuration for Emissions data using ElectricityMapsFree and Forecast data using WattTime](#configuration-for-emissions-data-using-electricitymapsfree-and-forecast-data-using-watttime) + - [Configuration For Emissions data Using JSON](#configuration-for-emissions-data-using-json) + - [Configuration Using WattTime and Defined Location Source Files](#configuration-using-watttime-and-defined-location-source-files) + +## Logging + +The default LogLevel settings for the application are found in the corresponding +`appsettings.json`, which may contain the following section -- see here for +additional details on +[Logging in .NET](https://docs.microsoft.com/en-us/dotnet/core/extensions/logging) +and on +[Logging Providers in .NET](https://docs.microsoft.com/en-us/dotnet/core/extensions/logging-providers) + +```json + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +``` + +To permanently change the LogLevel, just update the `appsettings.json` for the +app. To override a LogLevel at runtime, an environment variable can set the +LogLevel value. For example to set the Logging:LogLevel:Default LogLevel to +Debug: `export Logging__LogLevel__Default="Debug"` + +Example using the CLI: + +```sh +cd src/CarbonAware.CLI +export Logging__LogLevel__Default="Debug" +dotnet run -l westus +``` + +Example using the WebApp: + +```sh +cd src/CarbonAware.WebApi +export Logging__LogLevel__Default="Debug" +dotnet run +``` + +Or, to change the LogLevel for just one run of the app: + +```sh +cd src/CarbonAware.WebApi +Logging__LogLevel__Default="Debug" dotnet run +``` + +## DataSources + +The SDK supports multiple data sources for getting carbon data. At this time, +only a JSON file, [WattTime](https://www.watttime.org/) and +[ElectricityMaps](https://www.electricitymaps.com/) are supported. + +Each data source interface is configured with a specific data source +implementation. + +If set to `WattTime` or `ElectricityMaps`, the configuration specific to that +data provider must also be supplied. + +`JSON` will result in the data being loaded from the file specified in the +`DataFileLocation` property + +```json +{ + "DataSources": { + "EmissionsDataSource": "Json", + "ForecastDataSource": "WattTime", + "Configurations": { + "WattTime": { + "Type": "WattTime", + "Username": "username", + "Password": "password", + "BaseURL": "https://api2.watttime.org/v2/", + "Proxy": { + "useProxy": true, + "url": "http://10.10.10.1", + "username": "proxyUsername", + "password": "proxyPassword" + } + }, + "ElectricityMaps": { + "Type": "ElectricityMaps", + "APITokenHeader": "auth-token", + "APIToken": "myAwesomeToken", + "BaseURL": "https://api.electricitymap.org/v3/" + }, + "Json": { + "Type": "Json", + "DataFileLocation": "test-data-azure-emissions.json" + } + } + } +} +``` + +### WattTime Configuration + +If using the WattTime data source, WattTime configuration is required. + +```json +{ + "username": "", + "password": "", + "baseUrl": "https://api2.watttime.org/v2/" +} +``` + +> **Sign up for a test account:** To create an account, follow these steps +> [from the WattTime documentation](https://www.watttime.org/api-documentation/#best-practices-for-api-usage) + +#### username + +The username you receive from WattTime. This value is required when using a +WattTime data source. + +#### password + +The WattTime password for the username supplied. This value is required when +using a WattTime data source. + +#### baseUrl (WT) + +The url to use when connecting to WattTime. Defaults to +[https://api2.watttime.org/v2/](https://api2.watttime.org/v2/). + +In normal use, you shouldn't need to set this value, but this value can be used +to enable integration testing scenarios or if the WattTime url should change in +the future. + +#### Proxy + +This value is used to set proxy information in situations where internet egress +requires a proxy. For proxy values to be used `useProxy` must be set to `true`. +Other values should be set as needed for your environment. + +```bash + DataSources__Configurations__WattTime__UseProxy +``` + +#### WattTime Caching BalancingAuthority + +To improve performance communicating with the WattTime API service, the client +caches the data mapping location coordinates to balancing authorities. By +default, this data is stored in an in-memory cache for `86400` seconds, but +expiration can be configured using the setting `BalancingAuthorityCacheTTL` (Set +to "0" to disable the caching feature). The regional boundaries of a balancing +authority tend to be stable, but as they can change, the +[WattTime documentation](https://www.watttime.org/api-documentation/#determine-grid-region) +recommends not caching for longer than 1 month. + +```bash +DataSources__Configurations__WattTime__BalancingAuthorityCacheTTL="90" +``` + +### Json Configuration + +By setting +`DataSources__Configurations__Json__DataFileLocation=mycustomfile.json` property +when Data source is set to `Json`, the user can specify a file that can contains +custom `EmissionsData` sets. The file should be located under the +`/src/data/data-sources/` directory that is part of the repository. +At build time, all the JSON files under `/src/data/data-sources/` +are copied over the destination directory +`/src/CarbonAware.WebApi/src/bin/[Debug|Publish]/net6.0/data-sources/json` +that is part of the `CarbonAware.WebApi` assembly. Also the file can be placed +where the assembly `CarbonAware.WebApi.dll` is located under `data-sources/json` +directory. For instance, if the application is installed under `/app`, copy the +file to `/app/data-sources/json`. + +```sh +cp /mycustomfile.json /app/data-sources/json +export DataSources__Configurations=Json +export DataSources__Configurations__JSON__Type=JSON +export DataSources__Configurations__Json__DataFileLocation=mycustomfile.json +dotnet /app/CarbonAware.WebApi.dll +``` + +As soon a first request is performed, a log entry shows: + +```text +info: CarbonAware.DataSources.Json.JsonDataSource[0] + Reading Json data from /app/data-sources/json/mycustomfile.json +``` + +### ElectricityMaps Configuration + +If using the ElectricityMaps data source, ElectricityMaps configuration is +required. + +**With an account token:** + +> **NOTE** The ElectricityMaps API does not currently support access to +> historical forecasts. This means that functionality such as the CLI +> `emissions-forecasts` `--requested-at` flag and the API `/forecasts/batch` > +> `requestedAt` input will respond with a `NotImplemented` error. +> +> Depending on the goal, the historical measured `emissions` commands may be a +> reasonable workaround. This would treat the measured emissions as a "perfect +> historical forecast" effectively. Otherwise, use a data source that has +> support for historical forecasts, such as [WattTime](#watttime-configuration). + +```json +{ + "APITokenHeader": "auth-token", + "APIToken": "", + "baseUrl": "https://api.electricitymap.org/v3/" +} +``` + +**With a free trial token:** + +```json +{ + "APITokenHeader": "X-BLOBR-KEY", + "APIToken": "", + "baseUrl": "https://api-access.electricitymaps.com/" +} +``` + +> **Sign up for a free trial:** Select the free trial product from +> [the ElectricityMaps catalog](https://api-portal.electricitymaps.com/). Note +> that there are some +> [restrictions](./selecting-a-data-source.md#restrictions-electricitymaps-free-trial-user) +> on the free trial product. + +#### API Token Header + +The API Token Header for ElectricityMaps. If you have a paid account, the header +is "auth-token". If you're using the free trial, the header is "X-BLOBR-KEY" + +#### API Token + +The ElectricityMaps token you receive with your account or free trial. + +#### BaseUrl + +The url to use when connecting to ElectricityMaps. Defaults to +"https://api.electricitymap.org/v3/" but can be overridden in the config if +needed (such as for free-trial users or enable integration testing scenarios). + +#### Emission Factor Type + +String value for the optional `emissionFactorType` parameter to be sent on every +ElectricityMaps API request that accepts this parameter. + +See the +[ElectricityMaps API Documentation](https://static.electricitymaps.com/api/docs/index.html#emission-factors) +for more details and valid values. + +#### Disable Estimations + +Boolean value for the optional `disableEstimations` parameter to be sent on +every ElectricityMaps API request that accepts this parameter. + +See the +[ElectricityMaps API Documentation](https://static.electricitymaps.com/api/docs/index.html#estimations) +for more details. + +### ElectricityMapsFree Configuration + +If using the ElectricityMapsFree data source, ElectricityMapsFree configuration +is required. + +**With an account token:** + +> **NOTE** The ElectricityMapsFree API does not currently support access to +> historical forecasts. This means that functionality such as the CLI +> `emissions-forecasts` > `--requested-at` flag and the API `/forecasts/batch` > +> `requestedAt` input will respond with a `NotImplemented` error. +> +> The ElectricityMapsFree API also does not currently support access to +> historical emissions data. It only supports getting the single latest +> emissions data point for the given location. +> +> If either of these restrictions are an issue, a data source that has support +> for historical forecasts, such as [WattTime](#watttime-configuration) or +> historical emissions, such as +> [ElectricityMaps](#electricitymaps-configuration) may be preferable. + +```json +{ + "token": "", + "baseUrl": "https://api.co2signal.com/v1/" +} +``` + +#### API Token + +The ElectricityMapsFree token you receive with your account. + +#### BaseUrl + +The url to use when connecting to ElectricityMapsFree. Defaults to +"https://api.co2signal.com/v1/" but can be overridden in the config if needed +(such as to enable integration testing scenarios). + +## CarbonAwareVars + +This section contains the global settings for the SDK. The configuration looks +like this: + +```json +{ + "carbonAwareVars": { + "TelemetryProvider": "ApplicationInsights", + "VerboseApi": "true", + "webApiRoutePrefix": "" + } +} +``` + +### Tracing and Monitoring Configuration + +The application uses Opentelemetry to create traces locally in the console. In +order to configure it to send the traces to a tracing app like Zipkin, Jaeger +etc, please refer to the Open Telemetry +[documentation](https://opentelemetry.io/). + +#### Configuring with Application Insights + +Application monitoring and tracing can be configured using the +`TelemetryProvider` variable in the application configuration. + +```bash +CarbonAwareVars__TelemetryProvider="ApplicationInsights" +``` + +This application is integrated with Application Insights for monitoring +purposes. The telemetry collected in the app is pushed to AppInsights and can be +tracked for logs, exceptions, traces and more. To connect to your Application +Insights instance, configure the `ApplicationInsights_Connection_String` +variable. + +```bash +ApplicationInsights_Connection_String="AppInsightsConnectionString" +``` + +You can alternatively configure using Instrumentation Key by setting the +`AppInsights_InstrumentationKey` variable. However, Microsoft is ending +technical support for instrumentation key�based configuration of the Application +Insights feature soon. ConnectionString-based configuration should be used over +InstrumentationKey. For more details, please refer to +[the documentation](https://docs.microsoft.com/en-us/azure/azure-monitor/app/sdk-connection-string?tabs=net). + +```bash +AppInsights_InstrumentationKey="AppInsightsInstrumentationKey" +``` + +### Verbosity + +You can configure the verbosity of the application error messages by setting the +'VerboseApi' environment variable. Typically, you would set this value to 'true' +in the development or staging regions. When set to 'true', a detailed stack +trace would be presented for any errors in the request. + +```bash +CarbonAwareVars__VerboseApi="true" +``` + +### Web API Prefix + +Used to add a prefix to all routes in the WebApi project. Must start with a `/`. +Invalid paths will cause an exception to be thrown at startup. + +By default, all controllers are off of the root path. For example: + +```bash +http://localhost/emissions +``` + +If `webApiRoutePrefix` is set, it will allow calls to controllers using the +prefix, which can be helpful for cross cluster calls, or when proxies strip out +information from headers. For example, if this value is set to: + +```bash +CarbonAwareVars__webApiRoutePrefix="/mydepartment/myapp" +``` + +```bash +/mydepartment/myapp +``` + +Then calls can be made that look like this: + +```bash +http://localhost/mydepartment/myapp/emissions +``` + +Note that the controllers still respond off of the root path. + +## LocationDataSourcesConfiguration + +By setting `LocationDataSourcesConfiguration` property with one or more location +data sources, it is possible to load different `Location` data sets in order to +have more than one location. For instance by setting two location regions, the +property would be set as follow using +[environment](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-6.0#naming-of-environment-variables) +variables: + +```sh +"LocationDataSourcesConfiguration__LocationSourceFiles__0__DataFileLocation": "azure-regions.json", +"LocationDataSourcesConfiguration__LocationSourceFiles__0__Prefix": "az", +"LocationDataSourcesConfiguration__LocationSourceFiles__0__Delimiter": "-", +"LocationDataSourcesConfiguration__LocationSourceFiles__1__DataFileLocation": "custom-regions.json", +"LocationDataSourcesConfiguration__LocationSourceFiles__1__Prefix": "custom", +"LocationDataSourcesConfiguration__LocationSourceFiles__1__Delimiter": "_", +``` + +This way when the application starts, it open the files specified by +`DataFileLocation` property that should located under `location-sources/json` +directory. The format of these files is the same as the `Location` Model class. +In order to differentiate between regions, a `Prefix` and `Delimiter` properties +are used to allow the user to select the region when a request is performed. By +settings the properties, the region should be made of +**region**=`Prefix`+`Delimiter`+`RegionName`, so when the query is performed, it +would be found. The following example shows how to perform an http request: + +```sh +PREFIX=az +DELIMITER='-' +REGION=${PREFIX}${DELIMITER}eastus +curl "http://${IP_HOST}:${PORT}/emissions/bylocations/best?location=${REGION}&time=2022-05-25&toTime=2022-05-26&durationMinutes=0" +``` + +At build time, all the JSON files under +`/src/data/location-sources` are copied over the destination +directory +`/src/CarbonAware.WebApi/src/bin/[Debug|Publish]/net6.0/location-sources/json` +that is part of the `CarbonAware.WebApi` assembly. Also the file can be placed +where the assembly `CarbonAware.WebApi.dll` is located under +`location-sources/json` directory. For instance, if the application is installed +under `/app`, copy the file to `/app/location-sources/json`. + +**Note**: Under `/src/data/location-sources` there is a template +file `custom-azure-zones.json.template` that can be used for locations that +don't have latitude and logitude, and the underline datasource requires a zone +name. This is the case for data source `ElectricityMaps` where the routes can be +accessible using lat/lon, but some regions are zone name based. + +One can also specify these values in `appsettings.json` like this: + +```json +{ + "LocationDataSourcesConfiguration": { + "LocationSourceFiles": [ + { + "DataFileLocation": "azure-regions.json", + "Prefix": "az", + "Delimiter": "-" + }, + { + "DataFileLocation": "custom-regions.json", + "Prefix": "custom", + "Delimiter": "_" + } + ] + } +} +``` + +## Sample Configurations + +### Configuration for Emissions data Using WattTime + +```bash +DataSources__EmissionsDataSource="WattTime" +CarbonAwareVars__WebApiRoutePrefix="/microsoft/cse/fsi" +DataSources__Configurations__WattTime__Proxy__UseProxy=true +DataSources__Configurations__WattTime__Proxy__Url="http://10.10.10.1" +DataSources__Configurations__WattTime__Proxy__Username="proxyUsername" +DataSources__Configurations__WattTime__Password="proxyPassword" +DataSources__Configurations__WattTime__Username="wattTimeUsername" +DataSources__Configurations__WattTime__Password="wattTimePassword" +``` + +## Configuration for Forecast data Using ElectricityMaps + +```json +{ + "DataSources": { + "ForecastDataSource": "ElectricityMaps", + "Configurations": { + "ElectricityMaps": { + "Type": "ElectricityMaps", + "APITokenHeader": "auth-token", + "APIToken": "token", + "BaseURL": "https://api.electricitymap.org/v3/" + } + } + } +} +``` + +## Configuration for Emissions data using ElectricityMaps and Forecast data using WattTime + +```json + "DataSources": { + "EmissionsDataSource": "ElectricityMaps", + "ForecastDataSource": "WattTime", + "Configurations": { + "WattTime": { + "Type": "WattTime", + "Username": "username", + "Password": "password", + "BaseURL": "https://api2.watttime.org/v2/", + }, + "ElectricityMaps": { + "Type": "ElectricityMaps", + "APITokenHeader": "auth-token", + "APIToken": "token", + "BaseURL": "https://api.electricitymap.org/v3/" + } + } + } +``` + +## Configuration for Emissions data using ElectricityMapsFree and Forecast data using WattTime + +```json + "DataSources": { + "EmissionsDataSource": "ElectricityMapsFree", + "ForecastDataSource": "WattTime", + "Configurations": { + "WattTime": { + "Type": "WattTime", + "Username": "username", + "Password": "password", + "BaseURL": "https://api2.watttime.org/v2/", + }, + "ElectricityMapsFree": { + "Type": "ElectricityMapsFree", + "token": "token", + "BaseURL": "https://api.co2signal.com/v1/" + } + } + } +``` + +### Configuration For Emissions data Using JSON + +```json +{ + "DataSources": { + "EmissionsDataSource": "Json", + "Configurations": { + "Json": { + "Type": "Json", + "DataFileLocation": "test-data.json" + } + } + } +} +``` + +### Configuration Using WattTime and Defined Location Source Files + +```json +{ + "DataSources": { + "EmissionsDataSource": "WattTime", + "Configurations": { + "WattTime": { + "Type": "WattTime", + "Username": "user", + "Password": "password" + } + }, + "locationDataSourcesConfiguration": { + "locationSourceFiles": [ + { + "prefix": "az", + "delimiter": "-", + "dataFileLocation": "azure-regions.json" + }, + { + "prefix": "custom", + "delimiter": "_", + "dataFileLocation": "custom-regions.json" + } + ] + } +} +``` diff --git a/casdk-docs/docs/containerization.md b/casdk-docs/docs/containerization.md new file mode 100644 index 000000000..355a9a9b0 --- /dev/null +++ b/casdk-docs/docs/containerization.md @@ -0,0 +1,144 @@ +# Containerized WebApi + +The goal of this readme is to show how to build a container WebApi image that +can be used to deploy the application into a container registry and that can be +used later to run the service. + +## Build and List Runtime Image + +Use `docker` to build the WebApi images. (Note: Make sure the run `docker` at +the root branch) + +```sh +cd ./$(git rev-parse --show-cdup)/src +docker build -t carbon_aware:v1 -f CarbonAware.WebApi/src/Dockerfile . +``` + +List `carbon_aware` image + +```sh +docker image ls carbon_aware +REPOSITORY TAG IMAGE ID CREATED SIZE +carbon_aware v1 6293e2528bf2 About an hour ago 230MB +``` + +## Run WebApi Image + +1. Run the image using `docker run` with host port 8000 mapped to the WebApi + port 80 and configure environment variable settings for + [WattTime](https://www.watttime.org) provider. + + ```sh + docker run --rm -p 8000:80 \ + > -e DataSources__EmissionsDataSource="WattTime" \ + > -e DataSources__ForecastDataSource="WattTime" \ + > -e DataSources__Configurations__WattTime__Type="WattTime" \ + > -e DataSources__Configurations__WattTime__password="username" \ + > carbon_aware:v1 + ``` + + or the [ElectricityMaps](https://www.electricitymaps.com) provider + + ```sh + docker run --rm -p 8000:80 \ + > -e DataSources__EmissionsDataSource="ElectricityMaps" \ + > -e DataSources__ForecastDataSource="ElectricityMaps" \ + > -e DataSources__Configurations__ElectricityMaps__Type="ElectricityMaps" \ + > -e DataSources__Configurations__ElectricityMaps__APITokenHeader="auth-token" \ + > -e DataSources__Configurations__ElectricityMaps__APIToken="" \ + > carbon_aware:v1 + ``` + + or the [ElectricityMapsFree](https://www.co2signal.com/) provider + + ```sh + docker run --rm -p 8000:80 \ + > -e DataSources__EmissionsDataSource="ElectricityMapsFree" \ + > -e DataSources__Configurations__ElectricityMapsFree__Type="ElectricityMapsFree" \ + > -e DataSources__Configurations__ElectricityMapsFree__token="" \ + > carbon_aware:v1 + ``` + +1. Verify that the WebApi is responding to requests using an HTTP client tool + (e.g. `postman`, `curl`) + + ```sh + curl -v -s -X 'POST' http://localhost:8000/emissions/forecasts/batch -H 'accept: */*' -H 'Content-Type: application/json' -d '[ + { + "requestedAt": "2021-11-01T00:00:00Z", + "dataStartAt": "2021-11-01T00:05:00Z", + "dataEndAt": "2021-11-01T23:55:00Z", + "windowSize": 5, + "location": "eastus" + } + ]' + ... + > POST /emissions/forecasts/batch HTTP/1.1 + > Host: localhost:8000 + ... + < HTTP/1.1 200 OK + < Content-Type: application/json; charset=utf-8 + ... + < + [{"generatedAt":"2021-11-01T00:00:00+00:00","optimalDataPoint":{ + ... + }}] + ``` + +## Upload Image to a Container Registry + +For easy image consumption, upload it to a well-known container registry, +self-hosted or managed. The following are examples of using +[docker hub](https://hub.docker.com) or +[Azure Container Registry](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-quickstart-task-cli) + +### Docker Hub + +Sign in to [Docker Hub](https://hub.docker.com) and create a private (or public) +repository (e.g \#your-username#/my-private-repo) + +1. Build and Push + + ```sh + docker login --username=your-username + cd ./$(git rev-parse --show-cdup)/src + docker build -t #your-username#/my-private-repo/carbon_aware:v1 -f CarbonAware.WebApi/src/Dockerfile . + docker push #your-username#/my-private-repo/carbon_aware:v1 + ``` + +1. Pull + + ```sh + docker login --username=your-username + docker pull #your-username#/my-private-repo/carbon_aware:v1 + ``` + +### Azure Container Registry + +1. Build and Push image Assuming the container registry is already created, use + the user's credentials push the image using `docker` (it can be done also + using + [Azure CLI](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-tutorial-quick-task)) + + ```sh + docker login .azurecr.io -u username -p + cd ./$(git rev-parse --show-cdup)/src + docker build -t .azurecr.io/carbon_aware:v1 -f arbonAware.WebApi/src/Dockerfile . + docker push .azurecr.io/carbon_aware:v1 + ``` + +1. Pull image + + ```sh + docker login .azurecr.io -u username -p + docker pull .azurecr.io/carbon_aware:v1 + ``` + +## Pipeline Integration (Github Action) + +To automate an image deployment from a GitHub CI/CD pipeline, the following link +provides detailed information on how to build a `workflow` with all the +necesarily tools in order to push an image to a container registry of user's +preference (i.e. Docker Hub). + +[Github Workflows](https://docs.github.com/en/actions/publishing-packages/publishing-docker-images#publishing-images-to-docker-hub) diff --git a/casdk-docs/docs/images/emissions-forecast-csv.png b/casdk-docs/docs/images/emissions-forecast-csv.png new file mode 100644 index 0000000000000000000000000000000000000000..9afd7f84be68efd51a36ded8072d549e6d8ad3ed GIT binary patch literal 121628 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 dqjWqNVaXxj(03xH}9eD-CN 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�EwB|g?#?F;@WD*5F+5(a1uLvnMgNxUhyxW zO63eAB0rMTpqNof9-|U*At(Tyr9N-M3nd*k!$!|b@B^ZC)U z`3mqfCuhRU>{v>^*E*V-5izV>8JX$_I{r%>xB{MFcwcKlHH)tlfy^;F(|u6_+57O@ zPvdH%gP*DEP6p!eCS`Ep%nj;NvLYbrB_R2@xuE_$YO0!)2WJNxawza!7$ygdez;tZ z$hcOg&fz^D(k|B0%+k`f1c|ohp0`2ttqJP2rl-O43edogKcO6Fk7sP^k7pZ@LP{rWwYWE`)BVV4z zsl;y^ePpUwYF}Bl*n<-A#$ejPRa8Oggr&xa_kn?a1C%8a0|khH0!QjnqyEEHM{6lbEN^PVB0;z#@VvH}DL7gku({www# z!zc_40%is#?rlXbk&>4rMA(DGa}mQF8z=hILCwfbutMJ7??ZA4NJ|*flhT1PR*H<+ z?dT?CAXvp3t7}B0Sss72m^eOMs7YTYOrCRWyf*Zmvy2u)Sz~rGI{YG@>$H0k}sqtozlVT`@=8=A237i|9c)Zc8(A02|B1vQXUJ2*{L|3V!c=BO1y7cuc#I9u zDmtd#z^k`I-5qL%)3~F9VP3ZJcOZ=^P@mBkX; z?kK}}dvY(XRCpwhf)%Ci0aJ926p)rr#9x?f&z=}tSlVb6V&Hnn3~(WJm6aGCB#w~> zCmC@kW=F^o-2g7-(_ig^zj0FK=T;%TZ2YkP?wLT_zaiXFd+9+_ zY`+bWAth(UydZ>xV;3j~2);-_kK|qW3?9CQ)7X|=WJ_sLt&IAp+b;ns~kqZ zGMdz?!}WZJMiEC?rwWl6-DQ?@=-C|z`el*y)-l>Q)#mKTqz7<5k`FNgfZs)w3Wm}U zdI9Te7XxFT0PUAbd;8+@Nn|1WpF@$?;m={_G@l4Wghdc&cIZYgVpVOV_PcL-I<3xn zG2oNuh2hx=G9>z%88aEKnpp*}*n6WwGdfsc*?SW7J^JY0JD~~0Fcwzh3qA$!HSr=i zblf@c_D>A?DcSR8^a~SUnX&5mT2n*D zU%x9|<@+b2Ck)C6-Laa!+DhC=7DrrAGaqG8g0`5|1nf7BX#Npcf&54c?(S!&bZu2} zL{1J1t4J|c|8YH1UpA|T`mPHQb}qH@?gJ{LEkDt-UlA0A@NS-%PYyR}HaPIfqTC(9 zhGzPg#jX$EqQ+!-P2ehv^zCfm-2UnOT0#4dqrk0|pWriZ>$%pnLZwhBw$eFA z$#37)#NrKgdt%O(=6^$;v#is-10!e=3Y3&57*F5{a>1-5q*UXl6Rg(PoFQ&KgQe`( zUnF4Cp4vPft&NT1V#BiD&nk7p#Vqmb>&2G~83#Vu#uGa&jGyly_tpw+#vml1p2QP< z=u;Jo@hrF(%#b;(=>|8?5nX;~QkH@Ic&~>8^+2>k>Mic)7grm;H|)gNY*8&DO2W^;BOY7debx%=UG)v!3-ZZunH zJsx*RN!EOuabUgdPXvGuuZg+I!ICw-g7l)avXSG^0RDV5_dvo8TEF~B1vkg*lkQPC z5q!>0cMxoYaY%JMn93sG?qM1<*7eJ@Zef!Z0SN+?av=RNg7HU}fy_o5-1HwaOozzZ z-7B15ZJ$*J>VNfaR@r^oNIK;E$1jQQ`>~{mxBHm&f5wRY0VtyP`aG#s-bf5hK1dtr zQOc^YPURY3!@a?)*kHUr^naW3W)!5cusRbVAgIv|WZUDu*SRn?QcdYWdU}G0Bk-HW zP#En!?17lTHG=;BQAU8>@u>llC`nygt83a;5c=B(7YXqhm2omzgA$)_U&@m#imOea zK`I?>|6#|=Au6ef2^wYq3HuoiIvITSNMc}kEt%wiYewC!`dE=4x-6 zm~ISzdbZy1xc_=%3guR(H7*m>k25laXTKRgW^yn))Zj_1?dvbge;dndHtV?~{Eh;~ z5olA&ihg}Y%s}Apw>P)T3$y*Z!zv)G4z=0+7QzWmG_5}f!z#*ByGU%y1QCEhZ*)); zo9cAJp{0&3Niz;Jyf@Slm#&$tXX$M=WT1DsO1~N-I8|HMC5YN-nc{)+-Pm(5KD}XtgN!*G>&6Xc*}?U6;LP8=e)Y zxKw-Ie?g|S+plCd~)I2?C=ZOr@PPb z4-AJJXCz}QAShxoVsUcz_jOf>ySTDAm6{UK*TuWNxnmkr;N%RX~!`TK81?J*iXx%{1U7elL>UVW+-fz`ZGdv2%5-AR}RYtcce zi|ysijS2Y-nL6&M0f)SNS*^g$VcI>j67VxRVa9xGka=|9p`>Nu8a!(K#~B=AHxuRmcwsXzN;*3hP>gB4TX;Fw?K#8Pv>&APh$@xYBB38e;4qF-vU z*HA{()S?i>+;K-%x6kr;J&{6xFNke#bZ9t_BWTm>h{`{hpRAlQdQM$I5&ywF*K7w2 zGt(JAiEJx{lEZKtyqnT-HL?c;_krT-*abgS4>*vCgAbrjhGytN(_QjJQ-o=@Hq?>7 zh;hlmo(BEJ4`92{CSpA&+dp85i#Lp&VC>kFfVRC!gtMq8!zGuu7YFIK9S+pP?OXlK zh}#^+`Z#ZL{91-N1X>$ygiM_56$Z`^3Pj=afywiU3TuyGS8bFHoV{BoJ*I__ix&$= zrNi|;45?iFytdg5oof*9rP#pfXvq$HOmgO6l$^b>c0C8Ip=$d~F|=x*3U@rtodWpdAJbe+$8wlT}@8V2U5$GOSkh|06U}Wi*+D5HZg4daO5O69NwZ7k|% zX#1e(jH)AWEhEg|+SwPCAmNJHh|=|YK&tm;hjKeQ59IcU-Nkv@r8W#}-ipq%TElZL zX(At2AYyB}h~m|YIAI@!v)tZx$I}R&%E32ErIf^|W?ybh3r?MuuCtaz5b5a-2NtLi zFzrBrglQ2xzw&lUrwktIcHA6~4)4b8Y^*%7+qh%={HFd5vK|qS^`woL=X_FEZv8@MYtcD%4loLH?>P~s*%=AEnOUVg$) zu4e0BWxY797q-Bj5Bc1%=_jvj-ySb2@M=HlaVfV|3zg2;OdkxIoK@&}jFh~m;u;S3 zkMiE-fR}&3)SVuf%jCExm$KA|F~#|j#WIoPlhOT+DjbfNMHEX#M)w;M@ZZMiy*f*f z!hZNa&-Otlv3S9)8t@Ek-TDBYn=7!r;R81oYu&Uvd8oykHlwLt4lR zW7rmguOc_DBToIf%R2t)D&x)AM?$TT%+~oRTintr*4eQ`9(bM^+aJrVJ_~~DdNuoZ zy7TF6y9-#!>hnl#!DdiBwEXB6DbDshi@o1v;PLwdeaskbkZ%~n*boNdOJ4W;9~$PW z@`We(<+eAl(Hm@X%NddRZCyC3(ef#IYIqZ-p5yKEN2W^GwO0xy#hmpoQ&rMnZ?D*v zngPRgH(on@fXK|O^zB{mnD7&#z6R)%^QFSsKX3?M*+wizWL@l&Al;w0){5AV(6k-X z0xPmDb)EEoGczMoTVfq=`(a4TO!oh>(qqC}!fU$%TyXe*(ZU_pc?j|2!YB3@-Z;-` zkU_r5T?lFDG2`-gp}>c-UTL@*c{^7==Z5*(+7jqC>qyG{vIUP4VrO^W)L}w2k9gag z6zkLUBYcX@-5H!xZ~*u(lX=@#=TR@u{1fIYLV9V&KybQ4dRYY6BfHE6G%{)xW>2Lr zfn=tP?5*1antLDxzCr_SFCPhIYpGYEg|+TDnUj?SYW9fd`saRZv%4AZuWpT6av}1v z3OStJV4QGH4W)G?N`%D*p><*Jsno-i&3F%6a(-`0?7!Gv|B0AAjs!uX%pY+PUVfPK zJi!Phc2_uDpD>iFl{K(_lhmy(W^C0xbpC&6|C;b%o5y$wOqQZ#cW!{eVC7FZ1G`sz zVY}I~BfHMR2)3U<)o3{&e7vk)WXSL~J%EQaSd*(Bh|Un40-4{2T*l^(+uX2}-2v{O zg!r<<9R1;qjERys#{KLXgSTh#UiPf(Hu8O(`50OjfA$~qOgTI`an&9dkr&*R`1Ay1 zN}%L+HiFcKkz4Dnk>s`{gQIy_VVILM-NI7!q;-6naiSZ`We!ZsU|W8~erf@+zW2+f zDT2m?+rc*RJ_~*`;zye+h>%Ux$}~2lFuU{v!BaI)L^AdVq)?3yc>RqSOp$i&s~lcI z2PJ(T$t?i{yThW_y~A~9NMhH|3t)%9M6!ihUR0=$n4y6+^E+EtGI$CsAg z5{NFT1jQS;$M}~4lIzwoX>XWbcs5lm{mC)P!f%FSLFHaM>j)cx(q3;uNLLIR&MezW zkTD7yO*;O{>~9BFE7R9!^(fk(7EqsSwn+9h2L0DXkTNJb7^G&KSn@yv))e%TmZ6Pi zBhue`w?yXW3{G39G+FC#x43lgm$<{NW7-kS22qkR9}{KWP=I`&WZK-B^=E{B+Xp z6EB|m;lO4CZ?gSHpxNXoZyd5O8i+1?!C6(L_W|fjfMvU`Ltd)iqA8g7kmAD~R#bZ3 zuWtPlp0Xg{iDZL+g|9?zn`pu6NwILm9ftDm%ALM^Ih?-}_!M)?CVs6>Zo~#9F=-3_ ze3!fG?}X~O386xpZ=R~N958aRHxYRmGSbhPTmAh7!DKC2Q1>KsUWoeB)pXfibUQb8 z1F{pIRxG9Jsm>X4OJQVh*1zt$4dCxmuFw&y5v~jKCZHY7j{(GE%w95wn*M+cF<;2T zWM2JsXVx{;t&o$0O@8v^EkenXQF1<_e#&cmp=H<~3U+cN*+cHCzs#XnF#^xxU59&S z?-y9^igDi22>K9B#l`ATre9aKf{Ocz9Epskd!JQ@ibJOErb3Db)3v@|>Q_|ur``&) z$AjPOX=V8RH;MtjA516<8jo(kc7_2MI6YU;zEmPhA@1<*#X{PwAf(yp@BTF^(>!L< zS~a5Ie`#dCR^yc3Lsi!CiNOG>HQadFIyuS@s(oUwbN>s?8uQk+XcBW z%!1Z+1w{=?ul^E~jTZQ4JSe)WjOQ5_1`NbmW~~us`$B_I6iU!Oi?Ec{lvE#5N-1Kt zYC)sc5Jefm%I`jD-d_jexC5EY8M}pq97cblVGcr#*3%-^C`?bjefr)?UWL(e z7*x!E;QfIt2@06v(D7!*jipHQm@(sfq_ro$&z2O7WoVxe@s=qk34`l&*xQ3|{YR;2 z`T_A+r4^_;a*`&pe8Oaox;*)>&*h#-Pe0e>i0FN^l!kdjN$QX-Rr>f~p$SE!){^?& zJCg9sA{L7|*-*lq9Lb3kAny6QFJBz$+!btEnC+lZ-kb~}&<-#-`i~naO#`yPQ@8GG zUT9JEU}Y-7jb4+b#L(sm(JQskVkAS#K<16500;hxp0pi#yJ;1ezoVl%mB;zch1~| z{+;<5)IOuxcVMq2#M-=rO-2i(mt2=HU%cpmZ$a(vDbVtdN}h?pK$E@A#HI8N*5VfqMiZ(Xsta`wSY!cyVV!mlr~eo*AsibfvC$(UIILIXv~6 zxzqE?dz|#vdGX_NaR33pnBnJFfCF!(Qbv_kz#s7^h4vuIe4i`BwTQp1ZvYk?XrRrR>8eK*f27Gxt+)z2A7OmZjV zgbyR)&y(wc#53DWpH$JEwWbGTjb&5%;5p}C=ow}IN516Y9cY)(h_N7QqQ(|``{4hBz7O4`t?B_B*aWBLSU z5`&{Tz(_S+{yls5WgMO>07S>EU%r%{3aCcBY`8I8Jqp+9FBtth?`ojp?+Ebdg}?Wi zvf}1im?fz(L-E0j%+qU;E+s8Z-_Ce*vB~|D6}}vtw(j)V#>LeT!nWe%FY+YPmv##6 z&=K=JETi_lE*H2oxf^m#N=?!I?VNX4=kPETS1m`ku1=6?%aUUr_QJE(FZvhO_BA;1 z66YC)_LmxLDtP$0BrI|haNPcGBv$_4H}bua?NQl2)5g<4ABUD#XLQp9jL0V85#rV= z1o-Gzx9$tS_!IICMpt<@c)WBtRxl($+fH!GBbe}JXrJYV?c{0cOuN(j#_WiyycI7r zRl~G_tGyc1moVtJ_+bc!sblDAu7smC76-?-_FHPk$($nsSvFUI+9MkI;=8hhAk%M| z)Zmnd1|9u_@cY24!dL%obaj1qI z?2w;MsC!Gy2@xX%{8jV|FFCdo-l=9IX~mks#r2C~FPSEgETWT%qBax%gknNLz8 z0j#Upw~<49V}!rp=oINC3Zce2FXkc#Ap2`9c&EZ)w6!@zwg`@cljF0(K#o$vKPIta zw*87e;OwAL>9;0tp@#60=Z_c@b^ZI`BY0G>L$T z01+(oa?&x(5A_!8N)K_d+W0%6aP!+SJcj=laG>JMQNisIaUJ1UJ}&+q?1og$Lg*@J zu#X|!X(6wYct^n7)-RCQk zi!-!EMy0-X4ARPpoP&NEHx`^8fM}5_{Px~6Khfhd^e9E?ZoVJo*{wMR?PTBPWfP;r z3dVBCfxY1ZgSd;fYgpH-vxsgs2pT|n6aKT|f*fMxizzJtVb87rNE-X;o#EvtY21pS z7aH}edg||Y1)mq*e;$aS>+ycVivHcMZH_b8`h;y;<41fQfV|MAtfj-n{ffRuM0y8k zYTC|DR-m6fmW203h5;QKTf}MY@D}~TdAz+p(B_$hcNLCj$UGetDc*flXFKcA&-!oN z5MyTSp?GjG8&>=xY&v~jv2G)L6gN(1nsdI(ofs4YBVZkZu}%N_$HopHYadn+6Ag1{ zqDlUr{*U1g)tKVqQo{>4!3ez9i5%be-9kcP7=@w{l=6n=u9?sY(r0n4fgNXlyCA_({=H}FY z%S<0fipq*d4(`>fp_Bl{JnDtAUr+r@M7&3k9s`4|8;4E*%U>tpIX<3#c4-XwU>^=} z>sGiL_KXO?aQ?}AhGq1g>_t&_3&3)3Y{WlR>Jod+zQxP_RyjQ;t|Ga^Nk*uIqfRjm zFL&v&*^xe3?agdUDevZu>5ek<;rN8Ry<4cW-3D#$JjvZS+zLlm)Pt-+?c4DVV3VDV zgO*0Ye*HmfYy0h(Q(onGZi*N|Jw&ScQ-iycF6xX%AUKt)KhhUi;yCY6&n`}Ts<*aw zqrqzSeNz`x`QQS&=ap)@*ZGoUt}(6U_8EA`RAAQ0%E$I@@@=g?qhmJwqe=kXFDVK! z@JxZP>|rId>j^=ft5Jg=dkz%sqBS^f!md;8F2D>}VK0a-=W&+D!oitrCH5_(rn^J| zXSL|%+rgrq=?WA;D+wQ{3%F!RD*Pa2FsVd94h9J)rKN>!@N_Y|vIX8~+Y@Pus3c^3 z`yBP>F*g$1l-9D)FlIJw`~LVC**V*zGEW|E&oZ<3%T~%}sqkn~5YQ&aGJns{!o}Iutb& zEUB+oeq0zFv_%kU4Dsg6O8W_DwoCqqvZ)wv(dnVRu661AtkJ=FY7v5Fa&$<=I4tGK z^yN!%ts=O5VdB8@+A~V1{S;>+aFGhUO<_(YoAcghd-z)&ulB-nx_3A;oi^;8?axD88Bwio(ny8r zvE}pQ?0^cZX9@-iyu(s;p~Iexy=Dw}eVFF4X`=4CKH=Y=-6<`7P$x^DDj+8y6@lYDt&LRB;w?$0CrpS_ox0_Wu+ zcBNi2*zf~JRrYQL>-`K0T2St3jtHVAuCNngAYeTEVyeQTGot#Q3Uj8?X+%$gwoWRG zCWBiVZGtxfL@V{dI!6zZyc-7J6KgavZcvZBhrH#fN0pzH)s~0SLFD^TMn^i6T2lX+ z!DEf<%T7UN$ak9h3?juc3wIgxpXPmpR*6O_9P_}7L#Ukm6|N{qK|zAW=gWk(G7=hc zAqI54AsHLH5)szOsp&nM3#-Ikx@EL#xW^~%6-_?Ge)yESTNTPxbepU)$bU0lRmW_@ zHBpnfBZCdiWPeKp!0FmWZrxSt!*`DYlM6R0jY(>P#q0a^64he3M5LA@T^=q)7njh& zlbTsM?@2P@vP7q4ZG}lpOe6-Xb;nB0rb^!`;tX-@8M`gJSAYd&REi4rQl1`er1kYm zBEyY@Z6BoBH}r5`5~ryah^ATSg|TktLZk%oO?G105M<1s`4VrQ(W^KW3Nwo22W&f} zLqa=>5_Yz@vMQuml3#5dV^!MXqbGB+qwU-|nqTEf=zkNzcx}^I8Y)|oM4-2>Q2xwP6#0$E5eI9_uF_uFYzU^nI=+(=8;Ui&TjeU|% z0x9iO^fcp!3pyniirHkk+i2Z;U)2<}QpJy+Y^08K;Y_Mgvd;-_nVQ0rMYWlFJ9ts# zyY=jmlamIX7ZkD}>+^d62j(W+Il+--#D?S}h$vx(huT~_eg_H=R57%cd%T&8HTL6! zSM4{X2jW|Qyt~>1QmIym+NaVJ6?NMYH7P0gXPwBPCXV70-f5URa6SMrh0#w2N+mIT zD1MUxvG1!MmL_w(p-I}j^V41gb@lUvaY;nXa^9xzqKcU*f@Z(}mdFBTR7r~G-AF?4 z$)}ab3itf~r~ujol4)@yxNHtq*2a^D{RjcrsYsR{^z&04bJ7PlZGE(U0vO|J{szAVM19}W$E>FVbv3Xk#WI9=UpMO z>Y4TLXPo)rHl#KD{uB?xl3@iyG+>cA0@HYgFIl+MTTzrgR@brMGGpi+|H;g3ZZhU93!2HZac*KIg%k8B!EZkCfVLrO%L^83^?da6s4=Bzsyt>`&WlXwF882jq8t0 zku{xN%Dv^kmp zZW8{GvB|#0`yWDcA^~W%z;$!v&yvUnjjti+i{W~F8q+;99?;CTcFj!2>)a-HB<*96 zd092{%~m7sA1((66Dt<7y`kmJ-zQet=7BfLOKC#B;bjf+80N^b2Y81*&^vx#9PN0T z@x|K(;U(m>7y{{Ze*MpLpuF4Cr=`+J55v(wx2H=HQMnk6WqjFp=I0xAxZ0Ba)%fJ? zq{(m5sQss{*YukMG>kY}<9}>J0gaD%LgyE7m|sXwqIE5#Aw2F7TDQ2 z8?uT*e<)&T3Wjj45ss^ftp- zL_aHe2;5{Fs9ssYu|LM-hDK!ioe2w%CB(%&>jUmwztt1>5KDTunFLI#W5iV)*e2(8zQhT) zH@H}he<^^pcL;03G^ABy!{VxNOe{lSpM_yXJeCZ$Fll>6N<$p+8IRd63@rrGm%(*( zJwySOw<@G!(OmJOSy>gBqKas7RA*^FO=UotP=&+lr%60L?mNK%3e@b?flD zLPE{QTp1*Jk~5q#1vA}9OenvTyIAUR4$*w(e39>VvO>?3)yy>gX8>OAZOS1LB zVILl-!e7@?(xdg=zeSqPJco10p8I%+jMx1)-*HDU$$vjj64EC$VD`)xk{8xx!aAPS zr;03O)mMttkC`KRD7@-iLtGK)c)J@1fKCtD4=`i2Bpd_`1?wEeYtjELnp z2#%fcz9oycC!mt`mcW*hLXOp=me45@0=%9=mK}2@jH7(A+Gb)p-fDW_ZEkTTlu9iU ziVIJe=#gL@=Zc)a$`{VzHfX&nTn?( z;J{J)cgn=&{B^;g+I;vV_n3MVwJ;93neLlFX}*9vsmI|-=B0?7P^&SG^;Tdf>^?Qw zm>_$2OeoR63*uK_D0#Q|7;UqvULY>iK2FrZrF|hbW1M8z3wVBiCJ9q< z4fPzROHy0$OUW=WAPhgnEh^`tgi98g?eK@SOF2QBjb)i|J8gI0DEm4`-I_U}M@sy} zb21rE?x`T{Pq2bGo;6M&g@k0>XG02#SJk6YG|JAE9eHy$3Z>>u&-eU6q3JQN|h7-|mX(p$}_az2v^b>?$MtkvnIht*^a7D7rOmz&a zAy?1fnQfo zJjEXkM+Zltkbk%Dw#$17jG*s|MZo;3Ys0UAfzcYmoF$u$8Q=wELD63}bg+u;`6 zt%+-08DE1O@uJf*R+5um00PU(r=qHY(X}7G8T}L2q{0AMVBQ76?H{<^Z>99oM(x3O zS(HZ?Fk=<|m%uN(FrVVMjyZ2Ewe;Iimqlgb-?GICaWr_$wRIcj=pN~#D`!%P+3{vl zPKA~^TO^`~Zy!2txzQ+k<5q|LZga!oTyVEcbTZyeUZ`+UmOelQk z;oEMr8O{SgeYhR+&QsQz=y>)I=-}OSRDSCl9=Zb84KWdcc^a?_+})=k1khPT$yCnjwP_Y@rG45BRFUrN*M0pq?*C*p$Zw_aB)ZI7G71qyEZnOrs3 zn|>RMl>OfddcqVQGy@MyT^bmMw?X)X8}+1O?O3&R{9!5AXe~av4yXH$8rBna)utr- zQ$dKOY+BItIG?YQaKgqct}eqX{su?s2mJCQW8w^@)r=%3_0>k_>GgoD$;PxEQWl!IZC#wUww?GiQ33b7=SND6ZIE@QPZl*=apPPi zHa?NTg5*plG8s)6dRo(Ad8G|_ULMu5*1pjx;yAVCzI)1vy>hCVrxjNb1O!qOli>n^ z!Ab?acXA%+$HB4&2!njWfp#?k`B)!h!Z5y%b|K015C5E8njM+Aan zKYRf(F}W+483yIwC)f01(=)x=>yL<$#<*uFr3ma)CQ~%*a%!fP1TNRP3FWlcW`#r5 z^qUj6FJvhjT!Z26Fpn=@4vt($54_aXm9T0nhQI;MG>jKm#|U8u%Ng7wE!?6UJEOHQ zo<-+!5Uf+Z+xDh9lX0F^iMzAT!T=nu_HhL#4(uUP0V^d$qk_d+6D^40oMOWbLx)JX zzQjNx3T=0zyG6-g|Ne%c!#7UK6b7^BT5TYA6vxn}Y$ce<&JD(d1%vLHf|{;IwFN(9 zoe2j((<@4YH^aN;(LBM$&)vI`9V~~qIaF_;nu%e{xYObw&{*fkUT@UIQ4oE&W<(7{ zmu=-u@ab>2gPo?E5ECWP$$(vd>`L>F0=Cwq>H_gi&Y)@c4s45#1*otK}f3mCkZY3?c3dk4Z1rzr8 zOReYYJo`=!l&hC%Y_Ekw5yw0s*a>WpfsvhaYrydbT<~t?iImg@lh6P%bMr9$Yb9Q@ zlpL?dy%y{2erZeVl68iP`q0=|MT}a{q>?H(qu3jZa({YBNlX+}Cjt(O_=zL3%r7}! z(9s)9VKmqE)u5)Qn+QpjLa3F%$m#exF6+#cV7YU6PLTE?l|8( z@zo*9qurxuVl!zZj zLQtXr_a$~=%P|NNRV`&zCpU6D^wI$}^~APiI}Xs}lE)yvw{oRqTZI{(#Chq4G;2L6 zg6i((-a785T|2_hE%&;B)dv#9?28P+tSWzAhycMq{T+Dl29#`41j+n?k`C!kEpDAJXsf& zm(O+A*(qVTwY52wj7bhCMcu7Ec|m$d?*~P2ukIpa8RO3c_L!a=it;bys`VcSHsz1%)K+N*I(MEDT;3ppMEBLtt3OD{ zPYfTQmn&gr3uXOQ74cu=p!JJWHUcIeN7h)*x4;DEYk(VS}Xgnq*2p7*Xz`c z;v9n0puQ9n&8bo83=f=l}ulvL8H*HdoFh-|Ak`W(p?}@Q88|}c{U=@{I zI3XVC1`Tl9Ze(wUM@N4J2_^}}G1WCQ9Nzy(_mC^wCMhLlbQ@^=w?jJxTrZ?Jg6GkX zVk4*k^=gJDC|fD#mNk;p&AhjHNB~!tBigf=h6{E(*2WAa?py4-Axo29yeBfVfOwfF z(qMn~8rf%Vtcw>O)U40kQMsH*N=S4CJuF9@F|?A&DUo_vwX8zjTz9D^KHf33IMe}e zyTb!S?Pyv-`DN@<6FIb&#h9C$i}t$xnKV7+VSNx02|KFNM!C_#q`y5}OmPmcTxBLr zAwtP08;R!>(yrM89OS@ga7caYTY^s&&6;AKcOILlZ0D!ElHGu^w##N}3;nh5@}E|mo1I0Y4!pd=|CVO~#+J{nYMnU+w1eI(`a z0FEDvOWA}TP_Q3;`KWS|84yfezTmN~`GUMY%c7_*nsxp>OL!8arN;ByAgQOt)33mhCu0umj*W)zIb8|^ zQ!G=mKXQzVx%d?L+vBYaoSB*x^)QT3SqClIApmGN#jGQwhYvH2H{!lbpy!Odx3C0K z-kx>MCc3&y93w`oZg>%VN}-ASMP}b@+pilUc(PH%cGe%pR_dD7fhGOQQAgJ=v0M&j zs~ZS0LuDdxonO{$t(mH(Qw*TY4 z#KN3F=ZP8x2LNnT0W@0MO@EKK+Vc1CFERge{HNv6gu-%(HLw~*K**TYRUMIU1Sp+F zAIDbG-4f)DvTi=Oa@WY3g7BQP2Ic?f3L{BaUF*OT4(%T1t#r#1R+XKwF zw3PG!V(IBKO%LxKrK>X?IplQLk1{kgl&&xYdG}{GxV2Iiz!6;;Zyp(0LBT+fvX+%{ zvd;ZCGj2KDdSB-xk8TL2$TJ8R*Zq;TfTuT)ft3c|FVTYBQb@EvsGyN0JC`2G2 zAfFb$O{Fd`dr7mwJXxPTh)H5<@eK*E>NHj>Z0-c4qc)s`3kmn0;)1%{&?CxXl$dy7 zwVP0^klF?FYYa>nN z!u9xM877(|!{GH~sk6p{&AvQ6e0sK%>ZO{JJ5s`6v!vUI$@PQoyfJ0;JG1>e+0onW zY4BvOYcCBI_-8A9|NMhtxF^a-Sj%vr5BB~aGc*|`KZ8e~XMn8!er>t2xsCvJW~)2e z#A}DaLtNh~eSM`$n2iXyi9(jNwFUHpq<2}POi+k3FGUIrhM^Qiz#rTSXlLcQP@1_U zg2gYGTN$n1pntd#M1VZ~1_F9}a5O0hYB)Hth;pVVv|w5*@L{R&7-`cQ(7e;>FkA|1 z9Mylh3rW6Rk!>~3v$e)vC*#11l6@dB3Y2nb;18T}E(Nvp5)x}8UOPO}QYA6zOpKv@ zAoeuMx_6CpJ% ze4D0NEkliDI?2J-fx&2pTToSU>w97F%ZibO)v16K^e8Y|EIt4p6rWhQsG!{p-Zxlv zivbv)_7i!w$dv4Rx{oCeaAa0T$3*)Yx*Jl6S_u(FK+_lsElKMsA-_jT=NcDIM18CE z85&RFgH;X}7h<_R9RSl|z`3mg508o2f)eOms|YPN=I8UeyO!06bqU1L1pa&)aC2%37JO6KjV{PG|8f*n= zHN37@IFZBY%afKvL_2-WpJ9|Ob5@&9t7+HfRjN5WQeo1n#^ z#kmZ~{&5Z@B2@j05+VbSDEY$tM8XTo7Kk#bG*a|a!Ihb$i;EO+95kp<5zq`uNS|!P z%(8>zw-Cj_k_9H-=%{G2c_c=^#LK>vC;gIt9ouag-bVi9b4Zk4-) zPfk{ZL>jMuu)xvt!3!pxmRFPvO%~G*l*<96N}vtRSXMwibGfOgaZa0)5pji=7-vhi z_W?%2Oi0;@FmN~xw`qnfo?@Z9H`|1YgL0i|DmxkGmHK?bDPnSZKg+EwAt8@|a}$4j z%Tm;(iGkg}f0~n6_f0p!qk>`=Byh7M+L-vSYvqfFOGQH8oQ#3Q*-g#nf=6T0b3v~p zB{Ru5d7$Pw$;4vgaSa~aQlzejgo6rn?m;V(B2+;rR>@g2Xs7&8Gj z0yC4|PVT&m5R-$6T??~$JD8b1^&p{GH8=0N6lh$(9M{lOdHndeTuuW`xo3=hVXP%a z%kryBa8Adi1od~|0P8L0*q2Fe>~;5s9BMk9!J5Xed3TFhtF4`+a#`&oJRPqVhU0Yw z?(T;SYSma^rc!I}?j|UK05am^zcA-pUhuKVmj$+VT+{r%#0>p-!Tt)eI?u0I;xXp~ zOX}K&&!_N@@4K-S;=1dBS#wgW&Q|oV_a}jpIBo_u292f?G~YOAUUU zXt10vW2YPCi|X=)-6_r2x|I!_*Xtd%q&gt23wYt|#S3mt+*Il*fiK!ka>#7V0XWKlhVOY5DCs3Fc zi1rG9?=?HId%)R5a_45dEC6Eb=yrxQU{sk=-0+dHfd3Q}+MUhUer2v08`x|Q>=!94 z*&M+xV;f11Yi~x@%TeWj>|pMgL*?~$#T?AU?f>AoYo}sCbJ6V%u>4{#86GN@LkxQn zcaeV5e+pq(`4B-AYjQCGdMB?d^5hByBbpuWe6!l`as?Jzx|cB&>3Bs>4B(nk>Dk^3 zbOyq1ciEAeQMDMH%C~v#zSt0-Y=ZMrS%)Fydl%m;{CIqq?mKP$uycMDcRcCB(kU0% z9iYM_&Np!yLHsdvnDgrd@#>p}@0W`qkDqKj zlwepB(P>wSC5MNsV0mqr;UHLI*QquQu=c^g|@_Ou8*V_|zhHM>Q6EBMV1vjE1 z_hnO{cW@j~%Mxp-x}KoOX{O*=7Lb^5n#jPZ9TTp}GXz7w+$s=Rxi1^_XZhUsolpe9 z#1{Bbu-`MW7-PwYf7Jvm6znT7cpfnR^Opm53InJvg7>wFwHDpiyvI0Ut8A$KNsSHy z8_JWvbZ?~gA*{%^I}ULc7K8J3RX=eOnXPp@A&T4Z^(~3k-ZC(2FpI0j4L|a%E2JJn zqTt0ugD^#rQ1~o-jXVeY5}WnRnIJ0DQ|hV~gOl&z(2h3)EjoXfT&wBhg}6Egp!V=F z+JB(@x9?)5$YmbBW~8}4Rcvq=0y?82@ro!o?8m%LvTpmPD*w~ z--4U$0~a;bIE}vr(Q!__g$sUvNwzaY zV3c=#rv`t-UqC@c?F06~vFe%Ah6Wrs&Uksp5d=RYZL`?<$in)4bo-mG9VxB}Gb*LO#El{o9>C?_1u+96XGqn=yH0cde1E z^_7s~WTomU)O=u0w)|`>3*yTOW&C^}H2$@z0gnAi+|7%l2$;6X7>I`X`BH(L6$gCn z*AyQ|6gn@;GsV2!v(`I{Lps^YC3I{o6R2z~D8Tx@EyeUV=f^n-JoRYrBFk}1+$?r@ zu}2N)oC3)9PI|+sh=rK!g!z^d|F-$*>g#P2obWk9@&}UjE>9M<`fhd6BfU}K8_~&;OPvYyx@r!&gr@$xMd?uf$BiwZ*_#r*X4%K zYYY`X9=keF@icfMCGVM5Tz5&OA4;Eo-aP~0VIk2f+HQT-Ipn@bbTWdxH{9qp9i%Vp zsu@1mi9`Qtp59>3ZZoaqB5NKu4}aiHTkgFyzc_y3RIE7x(h4=uPNtsruWfP)4iNeH z_;^$KaDuM}YP%MX=l%CzfScIR?5Y>J!u!vUEHFWNQkt{lHLju0yL|Vs8XV_HQi}5U zthX=TQ$0O82rIPuFx6PkKeI)REPqsJt^_z$@)x8iyvTushO%-KnF}#ag>CV%*}HrN zKi%QgA~3i2OW2o_-h#F*9LOKn_PnU8JEpc)*$D&~WCs?`^NJD_owT-)r5L&xkO*Jj zc%|d3^;WCEN2uREoU`}0eKGGa%CiRZrgI1;xT_|%`-9Rml=HBKR zFSgHE47{|1N5{A{GQ00lcdJMIb~8`E?)7mEh_I*-f|X zJ7*K7i?^BnV(TkoS*;T{G$y;{;Jl+I-3AxI8rUs8)TL>lEvny@^x)>HP%Ur|da3!y ztV9Zi&VM#2vJ*AWFpK2zSnMl&pk-XLgGT^B{abUkSW_$m<~UdLYbeIKIsb}|8{t74 zCx`zqF(v^_=YiG}-bFC^N+t#uFqILHkBbdk2$iWfS-}@3`qFM&fjbMnw6t_l%{Ar2 zP(PKTKUa6<+F}8-kk-`GTl|T<&7Md^&Va&IEtg*^v)XAn7{5{Xo>oUvdyqFlB)LdawV$m`=WsWP0B!@T}J8_@?MAL_HLp#v49|M^o&|c?f5Z6 zN7#|K++?2DZ~)`k9X=(tKSjI3ofcJ79DeKciZ!w67HRjc2;svWyq_FbLu*TT5irL9 z;W9nc*HOviC|qPtMA0T2{P*1(Yvu&=9Y%?S=?&lBGGj(bTBoz!36QKKp|>CJR8wN- zjj_9hB54w2W;nR&#s~!iLR_9$KJt>rY)H!E;vD|)Ics&Q4^x-ud(qeGRA)Tn0CZ+}o0{*6O_;SKK2k&riFJmhM#d@B zsd@ANleqV*XvQkQ47@^=vE#VP#)X#deB0ew@^-bmruO^cW2LXaR@a~F6(19u6eU*8 z&j@83)txEE>CJ_t=-yJd%;pa`HoVUmRl{GwfBw)VS$ZaJVnrH$3H`Vo5J*K(#?LZ1 z9Qbik@9>*EH8r%l8a#);0qsI$say#!rIR4LfS1wX^jFD3$rOLjGXy&80_H}2sb8L7 z`;Gb|UOYpEXg|(ovYh>b^2Ivlzr$(I9Xe#){!&~pgSrxK&3^;e(DLUOs1aDTF!HTm z9eoYh%qW{Y+y-B5+7YrZw9*?MyDwM2T|aIhy$>*Is_?$>0Xsvh^+c7PjHS6HPjt|j z(HTKn(?U1SADdo5Ad~>Un^88vaJ^5aq}hlsNCO5svfBqY7%psfMtvdSidRds1>Tg* zm{I@9$Sf>`tv32Le>IK^tz{K&d`S&HMhCGElsgZeX4e z>^aX{V5^E&fa!31sN~$bqx`|U3yCs+ZcC$^2s=IPK~!?S32S>P)oDK-4JE4l^Ydh} z)}Yw>w;zFa?-nK@)nhCPV}(q&~AS+Wk@8ZSD(LYg1%8v z)L!1sHuKUf?)Nkf^&su@^}VyqV5Q6)qkmZh;;wXgkjB4c8S3gC%PsAxvZyTayJ0Be zkMuGcZ8Hi~r)}x@&}246sE-0&Ta14o8Xf8Fg&DKyAOX+TAX64F83fS(*t?Emu&Q-o z3qi2sD=@PLNo%3@L3TBl)F7XhO4ihttaOtJ%p>tM;r|}a9G+3U_$0%rF>8X;RAC){ zO-EAWkU!YF+Zb#iD-VI4AO4-G4MSa;56)vwO*Tm8w_2Y>9#N({ab!K#Es5mS^0X4c zBqUw?xPx!fuPemXNQ3)XL`I%lun%aU)WXgx;pXR)|HW1zVQ(e~$Y|1LsuCHbqm}p} zb#iz_Od;iJA}B3P^WX%T{4k_1)gAf=ixF=BEPNeV9fRAM^yX#^@B+yvV(Tgs!DSGW z=pWd|O;)aJoNH!+=)cX_WeaQvn40c?jvvn;b__3Qzj4@2ijf7q8uVUJb2_rYx@>j( z#(rJef2F2(5j_nQ#BjihM&B4@*o1sm2uJ=0b2q@IWhmb>SU{y}D_?#3GC06k3#Sh49WMYxgVw1m4Jsx)GIwDx3?LrrAek$;yOHKy0!(sItY<|JPKq73jH2EriiVkuC5G}mI-|NU@Tew9-K{SxMgN>!AoQ9 z14V6yeInQ=03oT8B=}s9yrqpit5jHmO~E)vDls4Nz$3(-K+sk?d`vzY(QWqE2~;uu@4<}|10s>w4B4Ge|wJVMq=c+uCk zB7+gXu~@rzED1>JQ7%VvrSl3U<$z?8FQsp9t3L!|39CF5S2&(SP1HfAho~LMJ7Dr7 z>-Q7DhA^@3SGT3%3OpY69D?bcWv#)Inz*u|jJmvr3A(?S6Jy?(iruYgL4wpM@4#?D z7`oryNVJR*_eq%sR7_};V8cIn@h~s{7I7;zb(Lf9Q_hucQU=A$?ZkPp8f#+!@yR+z z8UJ%oyTu}N64t{vDR#Wxk^59EmFl8=L=@Mrx^D<);W)%{L2|S%o-^lujfON)fAi#( z*!>i^A1}eS(=%_uh_@5<&E-{!s8Uy}xD3uC`-glN*Kx@NxPM<174*u<8SZ|rr?@i_ zXj?&cE8;qB0Af*aq!z>KMu=NH7=r%(lF8NjxKxUfVT-U6Mubvk2Tlt0P|_g5Rp`G2 zM}RyUKWiKp2_E=R{h6#2@9A-V5>WJwZbi|=S157;5qzrq(P@hj^f$|-zIS;&KqB@3 z*)IL7p2q>yZrCTG(47|9Zu7e?fK7Lo9DxffQplr|A-TD+2OJ#Gmox=l-+fH!({Vll z=4GMtwb>#m8hZ1CJS^;h(Q#=wQS-&mhTC0UD?YExbw7TfyzYFP;{Ry0%j4t)NN}Ge zvKzApcg@Pl)}iLX$hj~KUbM@nH19LxIR%cph-x6`^;OQcW|mZ*lh(Soa5Mzt4ldB1*#-k(cIY@o*L18ss)HxH1`*5h>IISfj^QA7{gTYc?KRg|Hv)YWY4F@ zHKjltxKhKX(`F?sTU^m<<79zmTFpx~0KtS2a@kYNPRXD6pvK(7P~R3$0|A1-dsDhD zAD_I9uYqt^shvBDvHzoM}>Dzbl@f5*$Ba*T_Ll}Z<;;xP=kx>kJ53AF@q2Czh zv9JjTv=%w9^$f~N!Zu1@4gh`2O5Z*tffx<%Zg@{O^k3Sm^2`#cr?}{zh(%iCK*if# zb7V5IOVD2knU;D#@*Qlgpx1Rn!Ey+kd@#b|Ge%)DWoSnTGiqiwv2Ho7}(I6q%Koq9TNEe^A|# zwhNtht2A37M+O%m_iM(G)H?q1!_!0#V5cnjCOy$!a4YG1`8eFdqv9?L{W!v}x3!lR zz>}OEta~NRrE;_vq~6K~rQi-{*DSN@-+Vj}ge5v-S27%7uqy@m1nAOywUj7y2d6yp zcFxIrbWbP0x7%{`q0Fy+@kUy$H3Zui{q%+?$k%3(8ym#PggV^?#RgC@JE3rX4nh!2 zF4*p0IXtDw{T2tzLCTl`8Vd?%H@3c?9lBLRYO0bO1r5|l)&nXoFNlBoKo&EoTtLY% zm&#g(-0W`bG65Tl3L#rLeU1RA_hYiCD8bZ=r851E>*!&~KaUU)ZJzw|Gf4{yX~G^l zU*m7n`1%+a&WO7@;|=ND9!fgJ>fJ}g1wxarY1p0j$SFt~pe(Wty=)9(r?I6wP(pm8 zlz9s5zT3o}UeGo45@Z7`t@cAXG-PT_ELoN+-)>O5cGix;R@!)ewa#^d6XNyz2_Z3F zZm>93I6~wE6p-U-!P#AC4Js7wd;lZ$wI@$bUkhJsO=ypFfPU)140*9VvjVK@q1U@C zKHzoZ(RnfkOOxYfB`RFs3%IdxQb}k@e;{RbLv{*hCZh(TMGFWmby8k51ZK07Emr=?BTyo(Q((pUe?7L%NRGt(jekD{-6m_vUG-DhIU zCk=ZMEdX%1yT1I5>dBmz^)N{ee(C8Py0prnrqKeyeV4A|X80whT=39$$IgKj(zV8% z--J)H&og_nMBCgsvIwNU$9dQPcp_Q~RN$4x6IT1+Hlq-m&KMa?bTh0yYA3^}&VcTe zWS;-pg0)=tN(2pY;9Yf^7{uuhiDUXI?-%tL>^WDME303bS|*sJjbP|`ITdgiZ9C93Oy2Wmy{ zW<-O}+v61Pv#y!i8CDUu&zsaHz^Jm*@V@K!{7r-3}XXdoz0b zZZ%`=3X9K=1H8Ze3bF~`L-uV%G}Lj|Z31Byw>K=%^mk^VKkeK&nHsSX`67_-;FX&DT|4H3b_Yu2q5yTcV{ zcH~K@^qq|WSZUYa?}A)P-^pfYX9tFdgF*NfFuB_ampyhTI$FFL3d(41(tx`S*~Nql zO@hsEuBn;>o6p_x)#kC()G~yz&I5jXQbZvsW#L>f$W8I{ST~lAfOxy9f#k_bEUt$2 zOz_`J^>avjDxSPKtK>AI@Ar;zawDbLK7qEjhZ9XQhXSyt#ai*(DW{Fn5&$;IPtAH|s9#>B>xoB3({CbB0b*LD7J2?=xc*0*2oNM0AZ*Mi;*7Utj4HQ<9^jol2Ev2gx042AQsjk+|2%tsn(J$e zK9k5YhX}~AEwft73&ITqPga!xcIh^clv*t<;A(c~7IOQfiE zV*{P(9N3FW;ddNlKc>45x1-3}*^@rX{eTg|%q_lfv8BuH!1mMalvP@BTWK0<>2Qjz z%E?g>Q)L+emsMdVLk3`zh|lU{wz=|dBbX76>$l`)O-LYfZ^9oTqQS?&^OBw`UH+`C z=3ugziS^Vs7Q#N=)fM;P5g|F}mj?Zqj%>)NQ(KinlU`#z78Zs<^gdF(hIRuJyMfO zArE$!YK5CHLRv*MkN6ps@FDR=V{=?7c$Mcz#ktHCq}J0M@lRyj+d)`qx!lxXVg094 zC<8rtX(`ZMS23&lT9oWSDb&Cw&yWtuk>PgIC~Q zWNK$vz+j;~G2G~LIP?g_Sf$N+ldyIkySeD$b4u&^Nc#a@946tfH+SsVTh$X@z|m(1 zl(53$zlJkXpzL_GfW8nf1$`-NQj?WThZsDub&(^E>d3_TK6PrDl}Ov4Q*tby^+JvW z8!+|#Qpv(vhSM!CWbBP{%-Q&F=st|EGi0^Eivy>OAE>l1XE& z&E0|=XuJMhM8L@8c^x~r@F9wbD=JO?7%Da0YxHoSez2Ep`;?`W5>Uq;zrS6?dceT6 ztVldRB~rt{i+a0KN66|Ik<}Hl@roiQ30F4?k}QN)RpjnBy6p`HO+~ed;AUb?YB%c1t)Qx%u7` ztlEl9Bdjq*{an)ODsA5~1R&WZW3r)=kb+Ne_Uos*Q(-yh>=lQUE|G?x-xX7Av z_hlX-1#WCd9nT){Sny5K=7`MX;Gx z>JxXw7vkfMg8N0PzVa))A-g8n2;)|~XLz!pvzQ*Y3u$&XcMZl3pZRNmN04n4z;&>B zg%IK6f`ml!b60$AhS_g!+y|gskoX_=&1JNcJr>LLff#i6t_Wv@H5EgPH|duUmi&Gm zC)~)ip8~WtHxf6Z-pqy8?qbiNw6nA;aH>s60DMA8CrD))z?l1oWbtFx8~X_p~_ zsM7psMsC)hJXzA$r-F^6;G>vL-p2(xBnSm$*qs|5e~=8yX+>U9fQ_+h2mG{c$7wV8Og_bN%z9Df5 zAA7qe6eldRAv4y>hR3;*IX$dP@L{}CpP=^5j zBUJiqS+RgG_b$3gC}9+?!}C?aC`b2Wt%*>wZ)~eE15j5U4oP}L^OX@yNSP}A5?p{? zsHObm^0zCBW+T){o79O}Z&Eu>_jHT+Ct`eCS^|j*byk6h9I9H6+``<-v(fCopbA|+ zW|MihxXF!Ru`VrjG3kVI{^q1h7}VYX2}-%BpJa%L%n|KcLN0Y5Po{CIhq$kR!)>xG zCErrdZc#qx7$XWaDe;?3`~rWd!W#LjC7HKBkq&`1vhaMO83odi5oldTFv@x~+tDg` zUZ?Qh-RU52eqex|3km6Rw^0O_UkE5e9&i-r#`hPEx)_@*2tgO8Em}<;e}Q4#<_>>s zlr%ePqL}-SBjtA`|J77HpD`OfSXjz*Zcb#Ux7S7^@$*up{S;-28nY75#@%k+?hoJ; z*CzG)(rT(16I>01Ik!Gfs9ZI&U!i{V2xB|9bOuHxWqf+EGn(OKS2wHdpT*b>UdD7* zz3utlTw1PIx{SyCt8pC4HtSbmcKJlnD7bu8QzAEP>I`-+37ZjkRY{awAo(Kv=m>(U z8lk>0E@j>bgc$kJtDpdv4DKR_$am$=PT51fgCV;lb zWQ1S{%p08sVQT5~L&1`_jann4E{-^W_#BR5iFTE=i1vm=w$z$S3gxZW+wwk4zr<_k z&|P#twpWByi9=ub!zxkOnaO2{NM9Rq7wkm)eF);!gU!XrfyqeSDWlBuSaj3C^WWwZ zn#|q0;7{rdMt;*GDo{#9W1O+^cS#K#=(m^L)(603tT>#L>#*E{sIiCOV|;X*x|izS#D1r<29}1SIm84&1aT z(27`llPd@pQy%LnKQQJa@%BahvI)taaFpkD=khRN4FJP*cW-+*dwYFF#Zq2%PkZS! zpa`QtOB)-dL!F1}-V?<`x0}l`D1%%%mw(2grR!98O!Vp3zvW{*GF`=SYldLcjO;y@ z0S1Qs$>(R28nL9);4p<~$wDsPZ)}y5FXN?6B$_r|g=ZM&61VR|q0;t$wdU_^kb$@7 zD%@Pm3yBN3-hNiiG$WFpB5TZ|+`F!*ZC3|#&73sCh#-9sVQl3A(gHbjmq>iewQ5N6 z@;6j9wbuN2(Wj?|NeJ+4}8_3!2;6c5EVL`f9V;@krf%T$sSVRp9t<;k&b6GaBb zR}BR`@gx~bSpYhDNPr)hIkzBJYj?6UCly7QfTUuS4pvpfWwcA3^Y&1fzvSjjXb z`&)+H-u3SUyS>$1?1=ALoJf(Qap8n1$mYA*qZ`)vV;>uv!LdBqr|ycrCsUU2sfU8N ze;}`=J_-&-Q>^5~iGPMkTN{a~=zdC44_X3(Nbc@-=<;Y3Uo%UXPZ$G*S@iu!gtZ%K zJ{xwg`F=)kXmdo2xLOlQ2tF6)uD!N-;>(>B=g1{xypCWkxURw;%(bCZWPi82Y>%)y zHW!p2v{-u~!qXL;Oj^X3lvp{wFVKVrAJSf%$cR{T4Q0Cu-!p9kj~?)D6A5Can~yC8 z^$vZzW6kSZk;0{X8>LCWrL=r!hKrlXIu%HGB{i*28$ z_47Cp5c^!5jHd0R(X2|M5=jAr{i#4A7vrw{mKRrW-(nciOFCpDP)cjepqG)u3fLYm zK;!vWUa=mF=YB*>#xl>JL0+kS(#s(EljBTMwi_L

k&YbqH2ca?p!x9Ll3++L?rO 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%0Ad|(yXzDO?qU*iN4s-aG^N(#T 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 literal 0 HcmV?d00001 diff --git a/casdk-docs/docs/images/overview-tiers-swimlanes.png b/casdk-docs/docs/images/overview-tiers-swimlanes.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8f853008b8334017d9bee75701b67a682747ac GIT binary patch literal 68197 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

FZ5hUA|2{OcNt>uPws+9Rt|?k;_9MY~ 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 Hi*Nq}yGx_P literal 0 HcmV?d00001 diff --git a/casdk-docs/docs/images/revised-end-end-tiers.png b/casdk-docs/docs/images/revised-end-end-tiers.png new file mode 100644 index 0000000000000000000000000000000000000000..b7154454620483f94be1b0863c9180aaaf39b80e GIT binary patch literal 58287 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 + +
Rel v1.0
Rel v1.0
Rel v1.1
Rel v1.1
Rel v1.1.1
Rel v1.1.1
Releases
Releas...
Members
Members
Maintainer
Maintainer
Chair
Chair
merged by WG Chair
merged by WG Chair
...
...
merged by WG Chair
merged by WG Chair
?
?
NO
NO
Discussion
Discussion
PR
PR
?
?
NO
NO
Discussion
Discussion
PR
PR
GitHub Flow
GitHub Flow
"main"
"main"
merged by maintainer
merged by mainta...
merged by maintainer
merged by mainta...
"feature-branch-1"
"feature-branch-1"
"feature-branch-x"
"feature-branch-x"
Same process, merge back into "main"
Same process, merge back into "main"
WG Review
&
Approval
WG Review...
Roles:
Roles:
Viewer does not support full SVG 1.1
diff --git a/casdk-docs/docs/images/tiers-architecture.drawio.png b/casdk-docs/docs/images/tiers-architecture.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..76d52df0f0ce8871f45aec98a2a8fdfc8cb08c4b GIT binary patch literal 71192 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 Wfc@l_k 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 z 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 Z{||#BaJc^Y$t?f?002ovPDHLkV1h(SjhFxc literal 0 HcmV?d00001 diff --git a/casdk-docs/docs/images/web-api-error-handling-flow.png b/casdk-docs/docs/images/web-api-error-handling-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..67e55f608216ff68388af4baa4a29096114d6f1f GIT binary patch literal 82718 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 literal 0 HcmV?d00001 diff --git a/casdk-docs/docs/images/webapi-swimlanes.png b/casdk-docs/docs/images/webapi-swimlanes.png new file mode 100644 index 0000000000000000000000000000000000000000..5d138b877fd27ebc78a94d2b4aea8bf61c3409f5 GIT binary patch literal 84607 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 z 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
^(_6S;vaRc-G9kL(3uv;7{@IR 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 Note the extension uses the default formatting configuration. If you want to +> auto-format based on our custom config file, you will need to manually include +> those in the extensions' settings. diff --git a/casdk-docs/docs/linting.md b/casdk-docs/docs/linting.md new file mode 100644 index 000000000..102819dab --- /dev/null +++ b/casdk-docs/docs/linting.md @@ -0,0 +1,65 @@ +# Linting + +- [Linting](#linting) + - [Markdown Linting](#markdown-linting) + - [Github Action](#github-action) + - [Linting Locally](#linting-locally) + - [VS Code Extension](#vs-code-extension) + +## Markdown Linting + +Per [ADR 0004](./architecture/decisions/0004-documentation.md), documentation +will be linted using +[markdownlint](https://github.com/DavidAnson/markdownlint/tree/main) to enforce +file consistency for readers and authors. + +This repo contains a +[custom.markdownlint.jsonc](../../custom.markdownlint.jsonc) configuration file +at the root which handles the markdown rules enforced. This file can be used +locally (to check/fix violations) and is also consumed by the Github Action +pipeline to check for consistency on PRs. + +### Github Action + +The [linting.yaml](../.github/workflows/linting.yaml) workflow contains the +github action that will run on for each PR. The `"Markdown Linting"` job handles +running the [markdown linter](https://github.com/DavidAnson/markdownlint-cli2) +using the [custom.markdownlint.jsonc](../../custom.markdownlint.jsonc) config +file at the root of the repo. This action is non-blocking, and is meant to +provide information to the user about violations . + +### Linting Locally + +In order to run markdown linting locally, you will need to have an installation +of [markdownlint](https://github.com/DavidAnson/markdownlint). We reccomend the +[markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2), which is +the same used by the Github action pipeline. + +The various CLI commands are detailed in the Github docs but the command the +pipeline will run (checks all files given the custom config except for .github +folder) is: + +```bash +markdownlint-cli2-config "./custom.markdownlint.jsonc" {"*[^.github]/**,*"}.md +``` + +The result will list all of the violations including the file, line number, and +code for the violation. An example successful result is included below: + +```bash +Finding: **/*.md +Linting: 35 file(s) +Summary: 0 error(s) +``` + +#### VS Code Extension + +If you are developing in VS Code, there is also a +[markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) +extension which you can install. This extension will let you leverage the VS +Code formatter to fix your markdown files. While it may not be able to fix all +of the violations, it will catch most of the small formatting ones. + +> Note the extension uses the default formatting configuration. If you want to +> auto-format based on our custom config file, you will need to manually include +> those in the extensions' settings. diff --git a/casdk-docs/docs/overview.md b/casdk-docs/docs/overview.md new file mode 100644 index 000000000..cea8ddcd7 --- /dev/null +++ b/casdk-docs/docs/overview.md @@ -0,0 +1,225 @@ +--- +sidebar_position: 1 +--- + +# Overview + +There are several ways to consume CarbonAware data for your use case. Each +approach surfaces the same data for the same call (e.g. the CLI should not give +you different data than the WebAPI for the same query). We provide a number of +different endpoints to provide the most flexibility to integrate to your +environment: + +- You can run the application using the [CLI](./src/CarbonAware.CLI) and refer + to more documentation [here](./carbon-aware-cli.md). + +- You can build a container containing the [WebAPI](./src/CarbonAware.WebApi) + and connect via REST requests and refer to more documentation + [here](./carbon-aware-webapi.md). + +- You can reference the [Carbon Aware C# Library](./src/GSF.CarbonAware) in your + projects and make use of its functionalities and features. + +- (Future) You can install the Nuget package and make requests directly. + ([tracked here](https://github.com/Green-Software-Foundation/carbon-aware-sdk/issues/40)) + +Each of these has configuration requirements which are detailed below. You can +also visit the [quickstart.md](docs/quickstart.md) guide for a step-by-step +process for running the CLI locally, deploying the Web API locally or in the +cloud, polling the API via HTTP requests or generating and using client +libraries (Python example). + +For more detailed architecture and design decisions around the Carbon Aware SDK, +refer to the [Architecture directory](./architecture/). + +## Carbon Aware Library + +The Carbon Aware SDK provides a C# Client Library with handlers that replicates +the Web API, CLI and SDK functionality. See: + +- [carbon-aware-library.md](./carbon-aware-library.md) for more information + about library features. +- [packaging.md](./packaging.md) for details on how to package and consume the + library. +- [gsf-carbon-aware-library-package.md](./gsf-carbon-aware-library-package.md) + for instructions on integrating the library in other projects with dependency + injection. + +## Pre-requisites + +Make sure you have installed the following pre-requisites to setup your local +environment: + +- dotnet core SDK + [https://dotnet.microsoft.com/en-us/download](https://dotnet.microsoft.com/en-us/download) +- Access to one (or all) of the supported external data APIs + - WattTime account - See + [instruction on WattTime](https://www.watttime.org/api-documentation/#register-new-user) + for details (or use our python samples as described + [here](samples/watttime-registration/readme.md)). + - ElectricityMaps account - See + [instruction on ElectricityMaps](https://api-portal.electricitymaps.com/home) + for details (or setup a + [free trial](https://api-portal.electricitymaps.com)). Note that the free + trial has some + [restrictions](./docs/selecting-a-data-source.md#restrictions-electricitymaps-free-trial-user) + - ElectricityMapsFree account - See + [instruction on ElectricityMapsFree](https://www.co2signal.com/#Subscriber-Email) + for details. + +Alternatively, you can also set up your environment using VSCode Remote +Containers (Dev Container): + +- Docker +- VSCode (it is recommended to work in a Dev Container) +- [Remote Containers extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) + +## Data Sources + +We support multiple data sources for carbon data. At this time, a JSON file, +[WattTime](https://www.watttime.org/), +[ElectricityMaps](https://www.electricitymaps.com/), and +[ElectricityMapsFree](https://www.co2signal.com/) are supported. To use WattTime +data or Electricity Maps data, you'll need to acquire a license from them and +set the appropriate configuration information. + +You can also visit the +[selecting-a-date-source.md](docs/../selecting-a-data-source.md) guide for more +information on data sources options, and +[data-sources.md](./architecture/data-sources.md) for detailed architecture +decisions around integrating different data providers into the carbon aware SDK. + +## Configuration + +This project uses the dotnet standard +[Microsoft.Extensions.Configuration](https://docs.microsoft.com/en-us/dotnet/core/extensions/configuration) +mechanism, which allows the user to configure their environment variables in a +unified view while making use of different configuration sources. Review the +link to understand more about the `IConfiguration` type. + +The WebAPI project uses standard configuration sources provided by +[ASPNetCore](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/). +Please review this link to understand how configuration is loaded and the +priority of that configuration. + +Please note that configuration is hierarchical. The last configuration source +loaded that contains a configuration value will be the value that's used. This +means that if the same configuration value is found in both `appsettings.json` +and as an environment variable, the value from the environment variable will be +the value that's applied. + +### Configuration options + +See [configuration.md](/docs/configuration.md) for details about how to +configure specific components of the application. + +#### Environment variables + +When adding values via environment variables, we recommend that you use the +double underscore form, rather than the colon form. Colons won't work in +non-windows environment. For example: + +```bash + DataSources__EmissionsDataSource="WattTime" +``` + +Note that double underscores are used to represent dotted notation or child +elements that you see in the JSON below. For example, to set proxy information +using environment variables, you'd do this: + +```bash + DataSources__Configurations__WattTime__UseProxy +``` + +#### Local project settings + +For local-only settings you can use environment variables, +[the Secret Manager tool](https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-6.0&tabs=windows#secret-manager) +, or an untracked Development appsettings file to override the default project +settings. + +To use the settings file, rename a copy of the template called +`appsettings.Development.json.template` to `appsettings.Development.json` and +remove the first line of (invalid) comments. Then update any settings according +to your preferences. + +> Wherever possible, the projects leverage the +> [default .NET configuration](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-6.0#default-application-configuration-sources) +> expectations. Thus, they can be configured using any file matching the format: +> `appsettings..json`. Where `` is the value of the +> `ASPNETCORE_ENVIRONMENT` environment variable. By convention projects tend to +> use the provided HostEnvironment constants `Development`, `Staging`, and +> `Production`. + +## Publish WebAPI with container + +You can publish Web API for Carbon Aware SDK with container. These instructions +show how to build / run container image with [Podman](https://podman.io/). + +### Build container image + +Following commands build the container which named to `carbon-aware-sdk-webapi` +from sources. + +```bash +$cd src +$podman build -t carbon-aware-sdk-webapi -f CarbonAware.WebApi/src/Dockerfile . +``` + +### Run Web API container + +Carbon Aware SDK Web API publishes the service on Port 80, so you need to map it +to local port. Following commands maps it to Port 8080. + +You also need to configure the SDK with environment variables. They are minimum +set when you use WattTime or ElectricityMaps or ElectricityMapsFree as a data +source. + +```bash +$ podman run -it --rm -p 8080:80 \ + -e DataSources__ForecastDataSource="WattTime" \ + -e DataSources__Configurations__WattTime__Type="WattTime" \ + -e DataSources__Configurations__WattTime__Username="wattTimeUsername" \ + -e DataSources__Configurations__WattTime__Password="wattTimePassword" \ + carbon-aware-sdk-webapi +``` + +or + +```bash +$ podman run -it --rm -p 8080:80 \ + -e DataSources__ForecastDataSource="ElectricityMaps" \ + -e DataSources__Configurations__ElectricityMaps__Type="ElectricityMaps" \ + -e DataSources__Configurations__ElectricityMaps__APITokenHeader="auth-token" \ + -e DataSources__Configurations__ElectricityMaps__APIToken="electricityMapsToken" \ + carbon-aware-sdk-webapi +``` + +or + +```bash +$ podman run -it --rm -p 8080:80 \ + -e DataSources__EmissionsDataSource="ElectricityMapsFree" \ + -e DataSources__Configurations__ElectricityMapsFree__Type="ElectricityMapsFree" \ + -e DataSources__Configurations__ElectricityMapsFree__token="" \ + carbon-aware-sdk-webapi +``` + +When you success to run the container, you can access it via HTTP client. + +```bash +$ curl -s http://localhost:8080/emissions/forecasts/current?location=westus2 | jq +[ + { + "generatedAt": "2022-08-10T14:10:00+00:00", + "optimalDataPoint": { + "location": "GCPD", + "timestamp": "2022-08-10T20:40:00+00:00", + "duration": 5, + "value": 440.4361702590741 + }, + : +``` + +For more information on containerization, refer to the markdown in +[containerization.md](./containerization.md). diff --git a/casdk-docs/docs/packaging.md b/casdk-docs/docs/packaging.md new file mode 100644 index 000000000..725cd6df7 --- /dev/null +++ b/casdk-docs/docs/packaging.md @@ -0,0 +1,209 @@ + +--- +--- + +# Packaging the Carbon Aware SDK + +With the addition of the C# Client Library as a way to consume the Carbon Aware +SDK, we have also added [powershell scripts](../scripts/package/) to package the +library, and have included a sample [Console App](../samples/lib-integration/) +showing how the package can be consumed. + +- [Packaging the Carbon Aware SDK](#packaging-the-carbon-aware-sdk) + - [Included Projects](#included-projects) + - [Included Scripts](#included-scripts) + - [Running the packaging scripts](#running-the-packaging-scripts) + - [SDK Configuration](#sdk-configuration) + - [ElectricityMapsFree](#electricitymapsfree) + - [ElectricityMaps](#electricitymaps) + - [WattTime](#watttime) + - [Json](#json) + - [Use Package with Dependency Injection](#use-package-with-dependency-injection) + - [Console App Sample](#console-app-sample) + - [Run the Sample Console App](#run-the-sample-console-app) + +## Included Projects + +The current package include 8 projects from the SDK: + +1. "GSF.CarbonAware" +2. "CarbonAware" +3. "CarbonAware.DataSources.ElectricityMapsFree" +4. "CarbonAware.DataSources.ElectricityMaps" +5. "CarbonAware.DataSources.Json" +6. "CarbonAware.DataSources.Registration" +7. "CarbonAware.DataSources.WattTime" +8. "CarbonAware.LocationSources" + +These 8 projects enable users of the library to consume the current endpoints +exposed by the library. The package that needs to be added to a new C# project +is `GSF.CarbonAware`. + +## Included Scripts + +There are 2 scripts included to help the packaging process + +1. `create_packages.ps1 ` +2. `add_packages.ps1 ` + +The [`create_packages`](../scripts/package/create_packages.ps1) script is called +with 2 parameters: the CarbonAwareSDK dotnet solution file (`.sln`) path, and +the output directory destination for the package. The +[`add_packages`](../scripts/package/add_packages.ps1) script is also called with +2 parameters: the target project file (`.csproj`) path, and the package +destination path. + +To see a working example of both scripts being invoked, you can look at the +github action detailed in +[build-packages.yaml](../.github/workflows/build-packages.yaml). + +### Running the packaging scripts + +The packaging scripts can be run inside a VS Code dev container defined in this +project. When running in the dev container you will need: + +- [Docker Desktop](https://www.docker.com/products/docker-desktop/) +- [VSCode](https://code.visualstudio.com/) +- [Remote Containers extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) + +Alternatively you can run in your local environment using the +[.NET Core 6.0 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/6.0). + +## SDK Configuration + +The configuration needed to connect to WattTime, ElectricityMaps, +ElectricityMapsFree, or Json data sources can be managed using environment +variables or appsettings. +More information on data source configuration can be found +[here](https://github.com/Green-Software-Foundation/carbon-aware-sdk/blob/dev/docs/configuration.md#datasources) + +### ElectricityMapsFree + +Below are the environment variables needed to set up the +**ElectricityMapsFree** data source. + +```bash +export DataSources__EmissionsDataSource=ElectricityMapsFree +export DataSources__Configurations__ElectricityMapsFree__Type=ElectricityMapsFree +export DataSources__Configurations__ElectricityMapsFree__token=[ElectricityMapsFree APIToken]` +``` + +### ElectricityMaps + +Below are the environment variables needed to set up the +**ElectricityMaps** data source. + +```bash +export DataSources__ForecastDataSource=ElectricityMaps +export DataSources__Configurations__ElectricityMaps__Type=ElectricityMaps +export DataSources__Configurations__ElectricityMaps__APITokenHeader=[ElectricityMaps APITokenHeader] +export DataSources__Configurations__ElectricityMaps__APIToken=[ElectricityMaps APIToken]` +``` + +### WattTime + +Below are the environment variables needed to set up the +**WattTime** data source. + +```bash +export DataSources__EmissionsDataSource=WattTime` +export DataSources__ForecastDataSource=WattTime` +export DataSources__Configurations__WattTime__Type=WattTime` +export DataSources__Configurations__WattTime__Username=[WattTime Username]` +export DataSources__Configurations__WattTime__Password=[WattTime Password]` +export DataSources__Configurations__WattTime__BaseURL="https://api2.watttime.org/v2/"` +``` + +### Json + +Below is the environment variable needed to set up the +**Json** data source. + +```bash +export DataSources__EmissionsDataSource=Json` +export DataSources__Configurations__Json__Type=Json` +export DataSources__Configurations__Json__DataFileLocation="test-data-azure-emissions.json"` +``` + +## Use Package with Dependency Injection + +In order to get access to the +[handlers](./architecture/c%23-client-library.md#handlers) in the library, a +common practice with C# is through `Microsoft.Extensions.DependencyInjection` +extensions. This way the whole life cycle of the handler instance is managed by +the container’s framework, and it would help to isolate the concrete +implementation from the user facing interface. For instance, a consumer would be +able to call extensions as: + +```c# +// Using DI Services (Emissions) to register GSF SDK library +services.AddEmissionsServices(configuration); +``` + +```c# +// An application Consumer construct should inject a GSF handler like the following example +class ConsumerClass(IEmissionsHandler handler, ILogger logger) +{ + .... + this._handler = handler; + this._logger = logger; + .... +} +``` + +And the usage of a method for IEmissionsHandler + +```c# +async Task GetRating() +{ + ... + return await this._handler.GetAverageCarbonIntensity(…); +} +``` + +Another functionality of the application could just do Forecast data. So, it +would be a matter of following the same pattern: + +```c# +// Using DI Services (Forecast) to register GSF SDK library +services.AddForecastServices(configuration); +``` + +```c# +class ForecastApp(IForecastHandler handler) +{ + ... + this._handler = handler; +} +``` + +And the usage of a method for IForecastHandler: + +```c# +async Task GetOptimal(…) +{ + ... + return await this._handler.GetCurrentAsync()...).OptimalDataPoints.First(); +} +``` + +This way it would fit within the same stack as the rest of the SDK is +implemented. Also, it would be easier to integrate later when the current +consumers (CLI/WebApi) should be moved to use the library. + +## Console App Sample + +There is a sample console app in the +[lib integration folder](../samples/lib-integration/ConsoleApp/) to demonstrate +package creation and interaction with Carbon Aware SDK. + +### Run the Sample Console App + +In order to build and run the app, all the dependent packages need to be created +first and then imported in the app. Follow the steps below to run the sample +console app - + +- Run the [script commands](#included-scripts) to create the packages and add + them into the app. +- Create the [environment variables](#sdk-configuration) to connect to the + WattTime or Json data sources. diff --git a/casdk-docs/docs/quickstart.md b/casdk-docs/docs/quickstart.md new file mode 100644 index 000000000..a3b68dfa7 --- /dev/null +++ b/casdk-docs/docs/quickstart.md @@ -0,0 +1,444 @@ +# Setting up and using the Carbon Aware SDK + +This guide will provide you with knowledge and examples necessary to use the +SDK, either as a CLI, by directly calling the Web API endpoints or by using +generated libraries for your language of choice! + +## Using the CLI + +### Setting up the CLI + +Prerequisites: + +- .NET Core 6.0 +- Alternatively: + - Docker + - VSCode (it is recommended to work in a Dev Container) + - Remote Containers extension for VSCode: + + +The CLI can either be run locally with `dotnet` or in a container, e.g. using +VSCode Remote Containers (Dev Container). To run locally: + +1. Make sure you have the repository cloned: + +2. `git clone https://github.com/Green-Software-Foundation/carbon-aware-sdk.git` +3. Change directory to: `cd carbon-aware-sdk/src/CarbonAware.CLI/src` +4. If you have a WattTime account registered (or other data source) - you will + need to configure the application to use them. By default the SDK will use a + pre-generated JSON file with random data. This random data is meant to make + it easier to get started with the SDK and doesn't represent actual Carbon + data. To configure the application, you will need to set up specific + environment variables or modify `appsettings.json` inside of + `src/CarbonAware.WebApi/src` directory. Detailed information on configuration + can be found in the [overview.md](overview.md) file. + + Otherwise, you can follow an example configuration below (export these + environment variables in the Terminal): + + ```bash + export DataSources__EmissionsDataSource="WattTime" + export DataSources__ForecastDataSource="WattTime" + export DataSources__Configurations__WattTime__Type="WattTime" + export DataSources__Configurations__WattTime__username="" + export DataSources__Configurations__WattTime__password="" + ``` + + or + + ```bash + export DataSources__ForecastDataSource="ElectricityMaps" + export DataSources__Configurations__ElectricityMaps__Type="ElectricityMaps" + export DataSources__Configurations__ElectricityMaps__APITokenHeader="auth-token" + export DataSources__Configurations__ElectricityMaps__APIToken="" + ``` + + or + + ```bash + export DataSources__EmissionsDataSource="ElectricityMapsFree" + export DataSources__Configurations__ElectricityMapsFree__Type="ElectricityMapsFree" + export DataSources__Configurations__ElectricityMapsFree__token="" + ``` + +1. Run the CLI using `dotnet run` + +The CLI will ask you to at minimum provide a `--location (-l)` parameter. + +### Calling the SDK via CLI + +To run the CLI, simply call `dotnet run` and provide it with any parameters. If +you fail to pass any parameters, a help screen will be printed out with possible +parameters and short explanations. + +To get a list of all locations supported, you can use the Locations API, +referenced in `src/CarbonAware.CLI/src/Commands/Location` +and the command `.\caw locations`. + +Expected output: + +```JSON +{ + "eastus": { + "Latitude": 37.3719, + "Longitude": -79.8164, + "Name": "eastus" + }, + ... + "switzerlandnorth":{ + "Latitude": 47.451542, + "Longitude": 8.564572, + "Name": "switzerlandnorth" + }, + ... +} +``` + +For example, to get emissions in the `eastus` and `uksouth` region between +`2022-08-23 at 11:15am` and `2022-08-23 at 11:20am`, run: +`dotnet run -l eastus,uksouth -t 2022-08-23T11:15 --toTime 2022-08-23T11:20` + +Expected output: + +```JSON +[ + { + "Location": "PJM_ROANOKE", + "Time": "2022-08-23T11:20:00+00:00", + "Rating": 567.44405487, + "Duration": "00:05:00" + }, + { + "Location": "PJM_ROANOKE", + "Time": "2022-08-23T11:15:00+00:00", + "Rating": 564.72250065, + "Duration": "00:05:00" + }, + { + "Location": "PJM_ROANOKE", + "Time": "2022-08-23T11:10:00+00:00", + "Rating": 564.72250065, + "Duration": "00:05:00" + }, + { + "Location": "UK", + "Time": "2022-08-23T11:20:00+00:00", + "Rating": 422.74808884000004, + "Duration": "00:05:00" + }, + { + "Location": "UK", + "Time": "2022-08-23T11:15:00+00:00", + "Rating": 422.74808884000004, + "Duration": "00:05:00" + }, + { + "Location": "UK", + "Time": "2022-08-23T11:10:00+00:00", + "Rating": 422.74808884000004, + "Duration": "00:05:00" + } +] +``` + +To get the best time and location from a list of locations and a specified time +window, use the `--best` flag. E.g. to get the best time and location in a 24 +hour window on the 23rd of August in the regions: `eastus`, `westus`, +`westus3`,`uksouth`, run the command: + +```bash +dotnet run -l eastus,westus,westus3,uksouth -t 2022-08-23T00:00 --toTime 2022-08-23T23:59 --best +``` + +Expected output: + +```JSON +[ + { + "Location": "UK", + "Time": "2022-08-23T08:50:00+00:00", + "Rating": 384.64632976, + "Duration": "00:05:00" + } +] +``` + +## Using the Web API + +### Setting up the Web API + +Prerequisites: + +- Docker Desktop/CLI +- VSCode (it is recommended to work in a Dev Container) +- Remote Containers extension for VSCode: + + +First we need to set up the GitHub repository +(): + +1. `git clone https://github.com/Green-Software-Foundation/carbon-aware-sdk.git` +2. Change directory into the repository: `cd carbon-aware-sdk` +3. Open VSCode: `code .` +4. Open VSCode Command Palette: (Linux/Windows: `ctrl + shift + P`, MacOS: + `cmd + shift + P`), and run the command: + - `Remote-Containers: Open Folder in Container` +5. If you have a WattTime account registered (or other data source) - you will + need to configure the application to use them. By default the SDK will use a + pre-generated JSON file with random data. To configure the application, you + will need to set up specific environment variables or modify + `appsettings.json` inside of `src/CarbonAware.WebApi/src` directory. Detailed + information on configuration can be found in the [overview.md](overview.md) + file. + + Otherwise, you can follow an example configuration below (export these + environment variables in the Terminal): + + ```bash + export DataSources__EmissionsDataSource="WattTime" + export DataSources__ForecastDataSource="WattTime" + export DataSources__Configurations__WattTime__Type="WattTime" + export DataSources__Configurations__WattTime__username="" + export DataSources__Configurations__WattTime__password="" + ``` + + or + + ```bash + export DataSources__ForecastDataSource="ElectricityMaps" + export DataSources__Configurations__ElectricityMaps__Type="ElectricityMaps" + export DataSources__Configurations__ElectricityMaps__APITokenHeader="auth-token" + export DataSources__Configurations__ElectricityMaps__APIToken="" + ``` + + or + + ```bash + export DataSources__EmissionsDataSource="ElectricityMapsFree" + export DataSources__Configurations__ElectricityMapsFree__Type="ElectricityMapsFree" + export DataSources__Configurations__ElectricityMapsFree__token="" + ``` + +6. In the VSCode Terminal: +7. Change directory to: `cd src/CarbonAware.WebApi/src` +8. And run the application using: `dotnet run` +9. By default, it will be hosted on `localhost:5073` + +### Calling the Web API via command line + +Prerequisites: + +- `curl` or other tool that allows making HTTP requests (e.g. `wget`) +- Recommended: `jq` for parsing JSON output: + +With the API running on `localhost:5073`, we can make HTTP requests to its +endpoints, full endpoint description can be found here: + + +To get a list of all locations supported, you can use the Locations API endpoint +`/locations` referenced in +`src/CarbonAware.WebApi/src/Controllers/LocationsController.cs`. + +Expected Output: + +```JSON +{ + "eastus": { + "Latitude": 37.3719, + "Longitude": -79.8164, + "Name": "eastus" + }, + ... + "switzerlandnorth":{ + "Latitude": 47.451542, + "Longitude": 8.564572, + "Name": "switzerlandnorth" + } +} +``` + + +#### Calling the `/emissions/bylocation` endpoint + +In console, we can run the below command, to request data for a single location +(currently Azure region names supported) in a particular timeframe: + +```bash +curl "http://localhost:5073/emissions/bylocation?location=westus&time=2022-08-23T14%3A00&toTime=2022-08-23T14%3A30" | jq +``` + +You can omit the `| jq` to get the JSON data raw and unparsed. This is a request +for data in the `westus` region from the date `2022-08-23 at 14:00` to +`2022-08-23 at 14:30`. (Note: semicolons `:` are encoded as `%3A` in URLs). + +The sample data output should be: + +```JSON +[ + { + "location": "CAISO_NORTH", + "time": "2022-08-23T14:30:00+00:00", + "rating": 439.07741416000005, + "duration": "00:05:00" + }, + { + "location": "CAISO_NORTH", + "time": "2022-08-23T14:25:00+00:00", + "rating": 438.62382179, + "duration": "00:05:00" + }, + { + "location": "CAISO_NORTH", + "time": "2022-08-23T14:20:00+00:00", + "rating": 438.62382179, + "duration": "00:05:00" + }, + { + "location": "CAISO_NORTH", + "time": "2022-08-23T14:15:00+00:00", + "rating": 439.53100653, + "duration": "00:05:00" + }, + { + "location": "CAISO_NORTH", + "time": "2022-08-23T14:10:00+00:00", + "rating": 439.98459890000004, + "duration": "00:05:00" + }, + { + "location": "CAISO_NORTH", + "time": "2022-08-23T14:05:00+00:00", + "rating": 456.31392422000005, + "duration": "00:05:00" + }, + { + "location": "CAISO_NORTH", + "time": "2022-08-23T14:00:00+00:00", + "rating": 439.98459890000004, + "duration": "00:05:00" + }, + { + "location": "CAISO_NORTH", + "time": "2022-08-23T13:55:00+00:00", + "rating": 445.42770734000004, + "duration": "00:05:00" + } +] +``` + +#### Calling the `/emissions/bylocations/best` endpoint + +This endpoint, unlike the previous one, accepts a list of locations and outputs +a single time and location with the LOWEST Carbon Intensity index. + +In console, we can run the below command: + +```bash +curl "http://localhost:5073/emissions/bylocations/best?location=westus&location=eastus&location=westus3&time=2022-08-23T00%3A00&toTime=2022-08-23T23%3A59" | jq +``` + +You can omit the `| jq` to get the JSON data raw and unparsed. This is a request +for the best location and time out of the locations: `westus`, `eastus`, +`westus3` in the time window from `2022-08-23 at 00:00` to `2022-08-23 at 23:59` + +The sample data output should be: + +```JSON +{ + "location": "AZPS", + "time": "2022-08-23T08:05:00+00:00", + "rating": 398.70769323, + "duration": "00:05:00" +} +``` + +### Calling the Web API via client libraries + +The SDK can work with libraries for up to 50 languages generated with the +[Open API Generator (Swagger)](https://openapi-generator.tech/). This guide will +provide a tutorial to generating clients for java, Python, JavaScript, .NET and +GoLang. There is also a walkthrough of an example Python script interacting with +the SDK. + +#### Client generation + +Prerequisites: + +- Docker +- Web API running (locally or hosted online) +- (Optionally) `openapi-generator-cli` + +The clients can be generated either by hand with the openapi-generator CLI, or +by running shell scripts which also call these generators. The easiest way to +generate them after using the Web API, is to do it Terminal **while** the Web +API is running. + +1. In Terminal: Change into directory `carbon-aware-sdk/src/clients` +2. Run the client generation script, passing the API URL (omitting the initial + `http://`): `./docker-generate-clients.sh host.docker.internal:5073` + - If your API is available at a different URL/Port, replace + `host.docker.internal:5073` with that url. +3. You should now see multiple generated clients in that directory (check with + `ls`) + +There is an alternative script for generating the tests - `generate-clients.sh` +which can be ran if you have the `openapi-generator-cli` installed locally. + +#### Python Client installation + example usage + +After generating the clients, we can now install them. Most generated clients +(with OpenAPI) should have a `README` file containing instructions on +installation and example usage. + +1. Change directory to `cd carbon-aware-sdk/src/clients/python`. This is the + generated Python client +2. Install the requirements using `pip install -r requirements.txt` +3. Install the Python client library using + [`setuptools`](http://pypi.python.org/pypi/setuptools)): + `python setup.py install --user` +4. The library is now succesfully installed! + +There should be an example script in the `README` file, but this guide suggests +trying the following example first: + +```Python +import time +import openapi_client +from pprint import pprint +from openapi_client.api import carbon_aware_api +from openapi_client.model.emissions_data import EmissionsData +from dateutil.parser import parse +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = openapi_client.Configuration( + host = "http://localhost:5073" +) +# Enter a context with an instance of the API client +with openapi_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = carbon_aware_api.CarbonAwareApi(api_client) + location = "westus" # str | (optional) + time = parse('2022-07-22T10:30:00.00Z') # datetime | (optional) + to_time = parse('2022-07-22T11:00:00.00Z') # datetime | (optional) + duration_minutes = 0 # int | (optional) (default to 0) + try: + api_response = api_instance.get_emissions_data_for_location_by_time(location=location, time=time, to_time=to_time, duration_minutes=duration_minutes) + pprint(api_response) + except openapi_client.ApiException as e: + print("Exception when calling CarbonAwareApi->emissions_bylocation_get: %s\n" % e) +``` + +Here, we import the `openapi_client` along with other modules generated by the +API. We create a default configuration pointing to Web API at `localhost:5073`, +change it to a different URL if your API is deployed at a different URL/port. +This line of code: + +```Python + api_response = api_instance.get_emissions_data_for_location_by_time(location=location, time=time, to_time=to_time, duration_minutes=duration_minutes) +``` + +Calls the Python Client to send a request to the Carbon Aware SDK Web API, for +the `/emissions/bylocation` endpoint, similarly to what's shown above, when +polling the API directly with HTTP requests. This is an example request for the +`westus` region, in the time window from `2022-07-22 at 10:30am` to +`2022-07-22 at 11:00am`. diff --git a/casdk-docs/docs/selecting-a-data-source.md b/casdk-docs/docs/selecting-a-data-source.md new file mode 100644 index 000000000..d156830dd --- /dev/null +++ b/casdk-docs/docs/selecting-a-data-source.md @@ -0,0 +1,91 @@ +# Selecting a Data Source + +The Carbon Aware SDK includes access to various data sources of carbon aware +data, including WattTime, ElectricityMaps, ElectricityMapsFree, and a custom +JSON source. These matrices are an attempt to track what features of the Carbon +Aware SDK are enabled for which data sources. + +## Contents + +- [Type of Data Sources and Configuration](#type-of-data-sources-and-configuration) +- [Data Source Methods Available](#data-source-methods-available) +- [Location Coverage](#location-coverage) +- [Restriction: ElectricityMaps Free Trial User](#restrictions-electricitymaps-free-trial-user) + +## Type of Data Sources and Configuration + +In the CarbonAware SDK configuration, you can set what data source to use as the +`EmissionsDataSource` and the `ForecastDataSource`. There are also certain +configuration fields that must be set in order to access the raw data. + +| Type | WattTime | ElectricityMaps | ElectricityMapsFree | JSON | +|-------------------------------|-----------|------------------------------------------------------------------------------------|---------------------|----------| +| Is Emissions DataSource | ✅ | ✅ | ✅ | ✅ | +| Is Forecast DataSource | ✅ | ✅ | ❌ | ❌ | +| Makes HTTP(s) call | ✅ | ✅ | ✅ | ❌ | +| Can Use Custom Data | ❌ | ❌ | ❌ | ✅ | +| Supports Trial + Full Account | ✅ | ✅ (\*[see restriction below](#restrictions-electricitymaps-free-trial-user)) | N/A | N/A | + +## Data Source Methods Available + +Not all data sources support all the routes provided in the interfaces +(`IEmissionsDataSource`/`IForecastDataSource`). + +| Methods | WattTime | ElectricityMaps | ElectricityMapsFree | JSON | CLI Usage | Web Api Usage | SDK Usage | +| ----------------------- | :------: | :-------------: | :-----------------: | :------: | :--------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------: | +| GetCarbonIntensityAsync | ✅ | ✅ | ✅ | ✅ | `emissions` | `emissions/bylocation` or `emissions/bylocations` or `emissions/bylocations/best` or `emissions/average`‑`carbon`‑`intensity` or `emissions/average`‑`carbon`‑`intensity/batch` | `GetEmissionsDataAsync(...)` or `GetBestEmissionsDataAsync(...)` or `GetAverageCarbonIntensityDataAsync(...)` | +| GetCurrentForecastAsync | ✅ | ✅ | ❌ | ❌ | `emissions`‑`forecasts` | `forecasts/current` | `GetCurrentForecastAsync(...)` | +| GetForecastByDateAsync | ✅ | ❌ | ❌ | ❌ | `emissions`‑`forecasts` ‑‑`requested`‑`at` | `forecasts/batch` with `requestedAt` field | `GetForecastByDateAsync(...)` | + +## Location Coverage + +Different data sources provide both different features (as outlined above) but +also coverage of different geographic areas. It's important to note that each +data source may have different region names, which are handled through the +location config. + +- For `WattTime`, see their + [interactive coverage map](https://www.watttime.org/explorer) to find the + relevant zone. +- For `ElectricityMaps`, see their + [live map app](https://app.electricitymaps.com/map) + to find the relevant zone and see current data coming in. +- For `ElectricityMapsFree`, see the Electricity Maps + [zone list](https://api.electricitymap.org/v3/zones) to find the relevant + zones. + +## Restrictions: free trial of ElectricityMaps + +ElectricityMaps allows new users to create a free trial for 1 month access to +the API. Free trial users have restricted access to the API and a slightly +different configuration for the SDK (see +[configuration.md](./configuration.md#electricitymaps-configuration). You can +request a free trial on the +[ElectricityMaps API Portal](https://api-portal.electricitymaps.com/). + +### Restricted Zone Access + +Free trial users only have access ~100 zones in the ElectricityMaps API. +ElectricityMaps maintains a +[frequently updated list](https://docs.google.com/document/d/e/2PACX-1vTdYp8E5E3fNogL54ICf_UxfA_rZ_RPO4WKWI4ZANPSX25jCbvHtAxc-VrJt9HymeRHFcSGWXjhVHS0/pub) +of available free trial zones that include the key, name, and country of each +zone. If you need access to other zones not included on the list, you will need +a full access product key. + +### Restricted Endpoint Access + +Free trial users only have access to seven endpoints in the ElectricityMaps API. +Of those seven, only two are currently supported as part of Carbon Aware SDK: + +1. `GET /carbon-intensity/forecast` +2. `GET /carbon-intensity/history` + +> Note: The Carbon Aware SDK is not restricting implementations to only support +> free trial users of ElectricityMaps. There may be implementations in the +> future that use endpoints that a free trial user may not be able to access and +> therefore cannot use that functionality of the SDK. + +### Restricted Call Access + +Free trial users are capped at 1,000 calls for the month of the free trial. Any +calls beyond the 1,000th call will be rejected. diff --git a/casdk-docs/docs/tutorial-basics/_category_.json b/casdk-docs/docs/tutorial-basics/_category_.json new file mode 100644 index 000000000..2e6db55b1 --- /dev/null +++ b/casdk-docs/docs/tutorial-basics/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Tutorial - Basics", + "position": 2, + "link": { + "type": "generated-index", + "description": "5 minutes to learn the most important Docusaurus concepts." + } +} diff --git a/casdk-docs/docs/tutorial-basics/congratulations.md b/casdk-docs/docs/tutorial-basics/congratulations.md new file mode 100644 index 000000000..04771a00b --- /dev/null +++ b/casdk-docs/docs/tutorial-basics/congratulations.md @@ -0,0 +1,23 @@ +--- +sidebar_position: 6 +--- + +# Congratulations! + +You have just learned the **basics of Docusaurus** and made some changes to the **initial template**. + +Docusaurus has **much more to offer**! + +Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**. + +Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610) + +## What's next? + +- Read the [official documentation](https://docusaurus.io/) +- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config) +- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration) +- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout) +- Add a [search bar](https://docusaurus.io/docs/search) +- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase) +- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support) diff --git a/casdk-docs/docs/tutorial-basics/create-a-blog-post.md b/casdk-docs/docs/tutorial-basics/create-a-blog-post.md new file mode 100644 index 000000000..ea472bbaf --- /dev/null +++ b/casdk-docs/docs/tutorial-basics/create-a-blog-post.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 3 +--- + +# Create a Blog Post + +Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed... + +## Create your first Post + +Create a file at `blog/2021-02-28-greetings.md`: + +```md title="blog/2021-02-28-greetings.md" +--- +slug: greetings +title: Greetings! +authors: + - name: Joel Marcey + title: Co-creator of Docusaurus 1 + url: https://github.com/JoelMarcey + image_url: https://github.com/JoelMarcey.png + - name: Sébastien Lorber + title: Docusaurus maintainer + url: https://sebastienlorber.com + image_url: https://github.com/slorber.png +tags: [greetings] +--- + +Congratulations, you have made your first post! + +Feel free to play around and edit this post as much you like. +``` + +A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings). diff --git a/casdk-docs/docs/tutorial-basics/create-a-document.md b/casdk-docs/docs/tutorial-basics/create-a-document.md new file mode 100644 index 000000000..ffddfa8eb --- /dev/null +++ b/casdk-docs/docs/tutorial-basics/create-a-document.md @@ -0,0 +1,57 @@ +--- +sidebar_position: 2 +--- + +# Create a Document + +Documents are **groups of pages** connected through: + +- a **sidebar** +- **previous/next navigation** +- **versioning** + +## Create your first Doc + +Create a Markdown file at `docs/hello.md`: + +```md title="docs/hello.md" +# Hello + +This is my **first Docusaurus document**! +``` + +A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello). + +## Configure the Sidebar + +Docusaurus automatically **creates a sidebar** from the `docs` folder. + +Add metadata to customize the sidebar label and position: + +```md title="docs/hello.md" {1-4} +--- +sidebar_label: 'Hi!' +sidebar_position: 3 +--- + +# Hello + +This is my **first Docusaurus document**! +``` + +It is also possible to create your sidebar explicitly in `sidebars.js`: + +```js title="sidebars.js" +module.exports = { + tutorialSidebar: [ + 'intro', + // highlight-next-line + 'hello', + { + type: 'category', + label: 'Tutorial', + items: ['tutorial-basics/create-a-document'], + }, + ], +}; +``` diff --git a/casdk-docs/docs/tutorial-basics/create-a-page.md b/casdk-docs/docs/tutorial-basics/create-a-page.md new file mode 100644 index 000000000..20e2ac300 --- /dev/null +++ b/casdk-docs/docs/tutorial-basics/create-a-page.md @@ -0,0 +1,43 @@ +--- +sidebar_position: 1 +--- + +# Create a Page + +Add **Markdown or React** files to `src/pages` to create a **standalone page**: + +- `src/pages/index.js` → `localhost:3000/` +- `src/pages/foo.md` → `localhost:3000/foo` +- `src/pages/foo/bar.js` → `localhost:3000/foo/bar` + +## Create your first React Page + +Create a file at `src/pages/my-react-page.js`: + +```jsx title="src/pages/my-react-page.js" +import React from 'react'; +import Layout from '@theme/Layout'; + +export default function MyReactPage() { + return ( + +

My React page

+

This is a React page

+ + ); +} +``` + +A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page). + +## Create your first Markdown Page + +Create a file at `src/pages/my-markdown-page.md`: + +```mdx title="src/pages/my-markdown-page.md" +# My Markdown page + +This is a Markdown page +``` + +A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page). diff --git a/casdk-docs/docs/tutorial-basics/deploy-your-site.md b/casdk-docs/docs/tutorial-basics/deploy-your-site.md new file mode 100644 index 000000000..1c50ee063 --- /dev/null +++ b/casdk-docs/docs/tutorial-basics/deploy-your-site.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 5 +--- + +# Deploy your site + +Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**). + +It builds your site as simple **static HTML, JavaScript and CSS files**. + +## Build your site + +Build your site **for production**: + +```bash +npm run build +``` + +The static files are generated in the `build` folder. + +## Deploy your site + +Test your production build locally: + +```bash +npm run serve +``` + +The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/). + +You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**). diff --git a/casdk-docs/docs/tutorial-basics/markdown-features.mdx b/casdk-docs/docs/tutorial-basics/markdown-features.mdx new file mode 100644 index 000000000..0337f34d6 --- /dev/null +++ b/casdk-docs/docs/tutorial-basics/markdown-features.mdx @@ -0,0 +1,150 @@ +--- +sidebar_position: 4 +--- + +# Markdown Features + +Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**. + +## Front Matter + +Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/): + +```text title="my-doc.md" +// highlight-start +--- +id: my-doc-id +title: My document title +description: My document description +slug: /my-custom-url +--- +// highlight-end + +## Markdown heading + +Markdown text with [links](./hello.md) +``` + +## Links + +Regular Markdown links are supported, using url paths or relative file paths. + +```md +Let's see how to [Create a page](/create-a-page). +``` + +```md +Let's see how to [Create a page](./create-a-page.md). +``` + +**Result:** Let's see how to [Create a page](./create-a-page.md). + +## Images + +Regular Markdown images are supported. + +You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): + +```md +![Docusaurus logo](/img/docusaurus.png) +``` + +![Docusaurus logo](/img/docusaurus.png) + +You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them: + +```md +![Docusaurus logo](./img/docusaurus.png) +``` + +## Code Blocks + +Markdown code blocks are supported with Syntax highlighting. + + ```jsx title="src/components/HelloDocusaurus.js" + function HelloDocusaurus() { + return ( +

Hello, Docusaurus!

+ ) + } + ``` + +```jsx title="src/components/HelloDocusaurus.js" +function HelloDocusaurus() { + return

Hello, Docusaurus!

; +} +``` + +## Admonitions + +Docusaurus has a special syntax to create admonitions and callouts: + + :::tip My tip + + Use this awesome feature option + + ::: + + :::danger Take care + + This action is dangerous + + ::: + +:::tip My tip + +Use this awesome feature option + +::: + +:::danger Take care + +This action is dangerous + +::: + +## MDX and React Components + +[MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**: + +```jsx +export const Highlight = ({children, color}) => ( + { + alert(`You clicked the color ${color} with label ${children}`) + }}> + {children} + +); + +This is Docusaurus green ! + +This is Facebook blue ! +``` + +export const Highlight = ({children, color}) => ( + { + alert(`You clicked the color ${color} with label ${children}`); + }}> + {children} + +); + +This is Docusaurus green ! + +This is Facebook blue ! diff --git a/casdk-docs/docs/tutorial-extras/_category_.json b/casdk-docs/docs/tutorial-extras/_category_.json new file mode 100644 index 000000000..a8ffcc193 --- /dev/null +++ b/casdk-docs/docs/tutorial-extras/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "Tutorial - Extras", + "position": 3, + "link": { + "type": "generated-index" + } +} diff --git a/casdk-docs/docs/tutorial-extras/img/docsVersionDropdown.png b/casdk-docs/docs/tutorial-extras/img/docsVersionDropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..97e4164618b5f8beda34cfa699720aba0ad2e342 GIT binary patch literal 25427 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 literal 0 HcmV?d00001 diff --git a/casdk-docs/docs/tutorial-extras/img/localeDropdown.png b/casdk-docs/docs/tutorial-extras/img/localeDropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..e257edc1f932985396bf59584c7ccfaddf955779 GIT binary patch literal 27841 zcmXt9WmFtZ(*=S%B)EHUciG??+-=biEVw%f7J?HT77G@f5ZpbB1Pku&vgoqxemw6v z-;X&{JzZV*cFmohnLgcd+M3FE*p%2vNJx09Dhj$tNXVWq2M^|}mn)^e9a~;bs1CC4 zWs#5?l5k+wXfI`CFI{Chq}oa9BP66(NZK0uiU1Kwn&3K0m`=xIMoxdVZ#+ zp?hKSLSSimjhdEzWp#6Tbpr;2A08YY9vwczVR!d;r)Q^kw|6h$pbtRyO;c2US2)Ho=#3q?{4m1GWOCI`k&9;zl9YDhH|l{oVck{{HdF$xGeh(%RX@ITa1V-QE4arPZ_3^N0KUo15FS^Rt74gNyU?f6HsD z>zmu#+n1LY=NIRf7Z*oIN2_aF7nc`%dwaXPyVf>#Q`56+>svGPi|1!&J3Bj8*0u|a zE61nDOKTge8(T{&>(jIU{?5$PF)%N#t}iaHQc%;Ky=4F7L{Hzy*Vp$Mj`%zGZ+7k< zCpRC^+V1HYCi6}{?rS`Ew80CL%d5-LF)(<1lJAQ_QE}I< z?$m+XE%JR|)Y|g5*Z=3YjLfXkvht|tSaC_|$oh1*A78S&%grr-Q|oi0ai*n%^?I3Z zz4Ifn)p1zW0ShuJU zjT*W!;4n~Y)3m5E=4m0n9;cN(k*j`y5!~j2)ij4x1#tx zB&it>z`(yY6BF>DU9?)rvOb2G!4AbPa`$!ju_}{}N=X3%ljy@XN?Dz5W~L8#vn;(% zS0y`!_FK8bT{5iuza9iPzyFntcC0hEUgCyxwZgrs_lXv54ZHujy!d4_U`~v!&Xq6w z_%CfMkDLt!D3SDYg>XEZ!YJH*s~-dg$LmS&Mt_;Y7X9a!>IDr+ded%2&q%}2^ODhk zoJMHe1;<*D7+WnelW=pb#;#*9m22_D0Uy+B;{x z(r=4T(e9>b$HL=1ZhtTnMZ8m?T*4WlE1nANJoY~M+S`a~oAzPxq?IY|K;|faC(Qf6 z6st=g2Oa&+>GJF*AU5<{Q1pIIjk9IOz}i1XThs0R)dBg}u}I!L^(JejuqE{$Bx0WH zK_L%2hekVKCo%({=C&4>8XPbm?HVjtj7;pR;Nl%bO7u_%gfl5w5S;(8b>qCb9KY=2 zcH1B8#T*pZQMR+_zF|mDvyu5p%arE^>?K|9F#FDuJCyu6$KPjjPBMq7j0f$|h@y!QXH+UdeH3iv*9ArYX^V-S2rxolaBRROkUH4!AxVghY-$mqUuOg%w5X}J1K z3LIKED&GtI+|Bu|l2OgJXS@ z##5m-UU-??q5BVBs3e%jt&;*!MXilSO_r%{gmW&qj$2WWx8M1Us?Tzp=Of?r=^y=m zDDr>5Z2+yUUf9O3Kqm?KxT9VJX#G6EP&E+e7EkxJF5QqcBPy@TsIFiD!!LWKz2ftR za<|^DinsXw>aBe|0DWOEi#5cV&B>!$i8?+vTr3ZDMK}XFeg)Ime5=*V++LLjj6sSf>5d+I|6V|cU`LfQPC z;p|(TN|j&~8CO`*qIi-79281;uL=cj-kt$ zx5MwWh>2LRlqjdUEGgk)P@$`Rs3-3sSlqxdxpG@!K`;a)V2m#wvau8$FIZuT9T00v znI8L>LHCkAZsu+5PUedUKs5fY2Ehv7Lqr}Ue$h;p6jBeeweEDUn2p#fwkvxk%Z<-6 zlgcD$>a-9H1#>^}Ku>>wLa`FkP^$V?ys$YQ&1L$o#0R}|{e?+I{K?~0CPz_*Bh#mo zh#!|PeV|ebfXa=JD#~>$?!*)i)b@eZZ`$qTk#-n$b{Cnhx2wH9N;PkqOwfS5FPe4A z!^5G+7=f|QUkN8gZmRRF-gxA&%`!7|FLGzf?uPu9E>P4d zrO@YSB$ z8Q{^@GSty5G&7xHSPy#pErSb3Yym^l5+QhvVlc)ItslUVgKOTQyYw8QX+2%`A%uhb zCJ{CE9{zUB(&-v8uRN|49S2Np{L4XRjFWz9R?)%ikl#d@WJtzM$=odVE^A1_CR5$l zs~b7y&?qM}RqSq1_-7&^wqiGh$yZuM2alHG{5LL=^QiF^u2prn!rcZ9%AF_!mJaxS9)8?8ha{9;`m^(Fx7`o(9*^- zI+OEv7<`;JEbKrNAh#EhBOA3x9E1Hr;lS)5pbY@p_LBMGn<&!Nxl41i9>dX%V}P+N zR;}+{G5WqCjnW#@f9ZNd^d5R<+ViQpx-L3$P}Nkiph3->K~K9)Sw$@INj*8YJLj@f z*+Rh+naB!_+NtSnzwWfLhq1;bmSozM80Xik(oGSLM*c)>iC_Wvd=JP|df1=roC3iU zoG&xR@$6d-6s0^VR}3V5OFQndgqfbboOay9Tf7RQmygGWgZ+DD(=|p9Aw+)O_j8?HRA#~+mIn^!H zQ6fcNW1FIjQ#SN_nK%EQV_F{VV77VfT5B(ea{vC|K#&-RTdcH#OR%(Mr#R1?jLzzq zSC-hN{(b^Ik^Q{uB|gq70;JUnM+#nmHCHA@PxC-sYqdnHZfEu1VHP*(8?jf)TsXH7 z`d(w{qU>V+81-UywGHL+AD7SV`|6-5PENL9RC02nnu15q_;*RRA_g8|!M(z88r&2? zCYs;1K=%c4QceJr-h+O=+K2tbY%HGQfyO1=9--HP5(yo2@2ad|TVK+$67(dBRpKI9 zcTvYDh?n^D9&qCvQhZoHb7DSvql}UJ8B+>~m5-ISatyypAR9WnfzbiDmXq*ctR3Xu z(~YwCAKYipx{EI8!HwsIlC6i`0rhcb>6<%+Cp)h@mK*_1d8_q6dg4>n}&ihP)NGiUvb81U?bXk&I< zbcqui@YB^CK-jFfu@*XpEERc^Mh(aJ)LBA@| ze4m|#Gs|Rc+0u4VvgE2s^$ ztYjCc@_u6&>iu~fe+ed*pr>hTdj(LcVf&SE`t2uXleZ(mhZd7kd|U$5HrJHPQ@IZ7 zz1w#&@Hi?VMVg$?DV~d{6LYoL8SFlWmuiYZxE8-M?^q32JSt7GoOVzZ8#I13;Ax`h zy=DXkH>H2B>%O@Ual0AO#Lh>Z`q=%r{iaZi3fZKcmBtmff&=e!GF%sO1~^L| z<3g?B>etUeZ?Suv6A<@bH;i=|KtG0mk@t4!qPRX4+^*osf+?77qg=U_OjVUxbTvh% z8DC!P=LlXRVFEd#m0i*Ka(b7e+3E&CC^Yv2#TgpoU(C>Wsp4))0%aRYtPxSr1x zO6uJUAMROWMj1L@;~jX6gRh(+e1ZqC_CTY4s&GfB-E;b?6+vEb;^bSE6j9xTFW;oq z9(1ndc$4}qdAB6ta4BN@p|T{**jB2P48}=Ya*Jc5#3mv|J&XRD;~yH>^DLwT>bp@)BbsVm+*3t=;598_Aj{ zF(?v`d_@ky*e%9dvu#A7+LtE~P$5VDCRJz{ZCt3Qh5aQ==>mF~k7bTCZxZg$!jnP8he7?WmJYT*1>c{*tJR|Ie+ScEevd4@gG>!gnL_ZL0 zKC)4$4wIXHIG~yE4+vZ~gh~Du9&92xJVUy91zt6P+$SZ9%)_wNU7KW~uGu2PF`KM6 z)UjHJQr%bRkMmIKABTD;BRcKhrdAbU;gFURvdg`TDW)T{)k8(vFbmtSAMueO{E8RHEQz-$F2C0;smk?8Q*e=qM%6O z6aGCJV;h1Tf3qvPEYi~fsz?&nlrg71v(eKqA!&F7d&p(^Xy#{`bl-!6%zc6pwsB;^ z+s#(uj7tu(L!ti&l1T51?Zuxg`16)sS-XNZm6tV-9#MfVeX#M39*XRuyFiJrxU@lO zA94#H%u0U~Ea9b26Qf{o;FeeG*!6uF*bYv#%%B^zN~9gqX{FS&&Ba|4AuSA${f^sf z7tg9}O%6m})g#&j5f%_eXA&}AZI!vQtzb=^sQxVZi~_}R^pgdM?5WD3%5Gx)%~qaP zgb4y1pEi3Ut}qG#QQ8SxhEkYe1Iy%QMz~|VS zKNsn5WGa%en;uc#7;LpDxYo4^@zL&dT*?Movr0f}Fry~2?+=LVy&$9SKV5+@SE-{M z4E!tmqebqFV%O~LO=L7??~zNUu90ECkq2Dut+Q$C#QJ*uQ33)=L?sH^oM|)e*HvE5J+C=qp79zhoRrLcNRA%1 zo?(m~(so82vOoC7`kQMWO5~^(`_b!C)8yq_VgnO5blD*sV`=DhQ}{$VtHxJJ@hixJ@hcZ z!Y6lPxZ6KphBnMJ)Ki2qFXY=iKs$GnX#1@Z7~hW~TuZju?)u=y?>z5W?Gv0-coA#k zCeo>mYl2HbT(xw!L&23l5KXaDk)yq}eBc&oPdWOPI`+f_o2cgW5QeU+)?Z2SHRplP z^{WM#a*z=ndtAjrTjbW0xE@*Ir~X+Bi-n#;6t1um9|^H4v%4b8X{_t71*TeupTOxB zM!=Yir}l!cM!GzQSnjS?@tOr){-JXhj8oH5p=g?cX47@jYyLLVq#|_Nsv3>>?X=ey zqHoKr;KTdI-GBAo?{+YUsVsacvsXS>8d?dLdU_)>MB*glDaE}%bBrd^98i+k4NQ8s zc0?8Fbqr&)Wq3Wd=YVyyUH$oZkbSRGYQQj1NofbRth{_t5aE##Z zRgYXbJ@On89x{nXLRlW`84WcfoXw=cPcZZH9T^b zcb#iuU7-qyv~G@U`}AkosbCYozUSeB3Hxyoirpqhcbvd|soGDf8>z48$4OE>XaW4E zM`Bd>uV&vA8~mC0n0*yWn z!;O|1HnCN1ghEB898BR#@4Bo&&oP9!4dcdtLZ@`un@&0 zzvF-GJhEY|FLF{hrM=dB7|h@3bEZZVJc3@GCJk0{ONwS8^g2F0`roJtV2uvN1O)|| zIfYh)=}lZzT`5BbTHcM6zo=WwB7-gyvx+Cm)a}&MT+1M^^h@h5kMVlZF*~3?Y5n)L zG9~s#<;5)1%>+_Ny*GZHAebop+bfp3&+eUH&4)I7Bc%5<40;DxP0G8{l|7Ufj)b!u zw?zWRNHyLJzYlCQj^pLwN#g~68@bp>+KA=l8QJkW-|B;3+XPeez-@9TIs${Q*6_9g zgZY+gF6*%)arn3AJUkn5bhfZ9zut{n6VIK=XKt|=rtOVmc&6zImd8%#b}Bw)vQ<=y zZ*)E`F>yPlf=T61Cm%u&Swgy**c63kVp0V|yM7_vkz7jkw+1H3?_NcbXa2QR`&1S! z+&YBgY5aZe3Oz3Y&y0-J_SoE$OJ?^Y5E^umyENba+t#hf=fjWb@y_QD-S_*?k6rg& zYCqi76Dk6v!l>?hqKLvuFrKkCcX`eYORriHtB{LekCARf*i6xO%HyN*j5mwg%*8!T z_-nF5R#R3`E%JC%un?Z*bLKZbmC(`y?h5hS4~y5*hgyC*ji|t|>+*|`-dcqG*G|Tt zEST8(?OF|TW>rp<0OymrGE9zAlwD*|y}VO>>~H8Z91s2Imik`Rq+^-6$BW;-O~_dA z!0~$@ir)8VZEok*1Z^bx^25FUR#w|5ZBYL3o!iz3!TIR!4dM0kJ3M$Uu6oT8;CKYy50-UD6m_X=r8s9+5$+sA0zy6pqH_&Z@W^+??+HTsDpji* zpJYPs-t|l<_3g9}ngwho*oRGjLvmgR^?mB%vOAB;nrI30-@eap3v)1iCsy6LJHpO1J< zyJZ4Wh4TL8e$;A)3J{xrvG(WSc=))?Jb7Ude7PQzrs^QKFUs80=y)usVamepIs@|w z`Iz`#mm;4!p8c?~+N=@YBv*C$SE3I503HJZ0R|PT!IyVtgvYdpEy__RjV?qXKeZS8 zQn;w-0EHEP$J1*7n@+9+ndkivReVrStsXO#HIyz74ueJ3uc5Y(sVEe}?RntR{lQiH z`Z!qQ;Og%AD&~>mulH;=Kz}3H2_E@LZb@~4srs2{vY?%@)Kl!Nap4D79D{9}Z!`{& z?#?MOm>og((zofbkjOl>6O9@pvqoooVcjc^C-#xV?L|D3rXAR!rX4PzRkgx;H70*D zI_Pqi!x-h~CVp;&e0Ji8#XXONI@+S1=SSfqMQ>WVhhw!ZpqKaFLfG@O*E!;9JweoR z?{TX1XS6B@-~)hQV+wZL_soD`{+?KKnJh{Y4z>ugj&n-b6_}jBe(jSLX6P z&9H{W>AHrLNjvzbPKRmV@tT%0mYUCuBT1kvP^GO=`ICpra+8UwYXrd(pWPuzm_4{& zWk{u~y0Zv8Qlt(vtPO(#zX5n?`VDW3Ct(plTSM;$<*Wqlw`Z7-AN6CITh2!btkaDu zrf!`e&u14f%tSP&(Dnr<9bp(XcXW%tYO*s963nBWA=#0746gunNA6vAeP1s zh3fwN_Xo-D)nJ}kr8L9iLhlp8zQQ{nY4Q$@E9VtETvY3caFqEe?wB~cpWg4cy=Whdd?Z? zXPs;EKDvGsP6*bHo;Asedj+UOAyPE`Cwl8av`E7KMRPx4{M5Nm)na^3~o1fyYQucv~N{FBO$#$%a?f> z_2b|tKXBB$5)5npHFNe?Zy-grTI8sM+$}L__i>e2nemkwx%9r!i}lDhBEL!$_8+d6 z#LJ6vr&OO=-?Wf@W*)yvCLByyX|NQV|ecCy7=VAOB)9BI*Nhl6$m2&;G5gX z7X%M-WD-iH8(`K^IByV*KC4pkE;Q%d_{*#4?^g1OlJz4do+x=4js7@ z4A1i5J{^EH#kWeooG$|j7@#2|@kwpNNOp2q5tS?TUv|0sCwg@^U#G?D|NVyEHk3@4 zh9QWPx@!?z6UooVSfd6QY0LCJiII2vLNZ0~Jqnz~Z^l-ou^A;QU;}AhM{s6oqmA>R zx?|OM=&u!W1Uio$0m&-Ry7O|=MSkJHZ2nMCm3cd2v986rcYhXj>{)~`rp~In^`jTf zFrXGkn7tKYRu$h+~JfC4LO`D=-Is- z`O52#2dQHUn`kg1yFQXPBn)1doD3>%Z#Qc1db!Om^YRfrJIQst z-;fRaT=uTy2I$-qS|{FdP~V|NDf7ik?ZkYCef!_RSVV*5*a4(SshTJnq8S~a`-xao zsx;}%hcFK5ULvK;gHS_-z^^qx#frvEWpEI~{rtfbuS8wSnx+wfU>o`2dC=x3`D zBhoCot?)M$PTo$u&5L;JYCKUEb(v4VM%h4az4C?X?!Y6cb3KdhwS}?e9dC7;HdnO7P%wI_DM;;s)@@Z%bXbtAz>;d_JUlP#%eF{9 z&G?mfv!)Kp4BGm-`S$V!e>YW%_7wOu6Y@dH03UOV54u#?t3zN87%+2DV4y8UA)tjRAF;L2r0P4{}i zS>CSrwAQsVg`0^P+-P9(t8Inr_eUS#5t?4*HluhdNj63cJr5&s250OW1_Y*Veacuo z)0zW>;IdzS14@>TV9}D^5NujBuLsVE+*^zGaRsMzd40GW&lUtN9c}wb{~oH-rn5i@ z8}x~^(V56NJ>0RjWulsd{#z*g#MP3;$Kift?|Xb^>Pq7n-uera3;fa&%Kqq+sTISU z>9I?T5p%nzkJI+%EB3-pvu^_`-K4BPitQJr=<|A1pF^2$^d||Im4!Lx+DZc#;0d%Z zU}NxmZU|4p(!59eAHdzA{rqw6Ka=ssc2YVTy@Kr%TweSx7~PHI0$Ux(MH2xP>83k; zbDo^brmW`!))Eo*!~#*~(W4nwS!=Y1;yzh_{9+ERu~TOO)jk9Zv~B;)rYQX6mHFEK z$FpwAYy(lY1r9y+I7I{>9?geW)UF1iXT09htM#|*5w)gCZMKyi*_Ji;8TO`jkr6_D z6d^;@Cn2~1@1t9zQh@LC&YnCIm}xot2eOM8;p8qUQN8+;{_dBN&^VM~s_~5G#LV6m z_E3xKqtq!foUe8JYAMWpG6L66c?}#MBe-snYIx34#${6zQ+joY8Si;6OdZ&ke9RI9 zhJVE8S27lRcxM1to&zo06ulR~=)s2%EoSb-}Kq8vZm%56`3bWG&{95m-EEyf%f3 zH>Hp1P(-{>oBt2RmrZ0^^02K|$)u`-lkn!CnYo`C98s@Jf)-Nt3YGS7qu+WJ#ig-Q zFrQrF(9BS8SkgJ;+Ad7Nb-pL%EFha^nT1{-?E>u#tIcaiqZ19=37#rTd8pgB7g#`{ z3R`W-FmER}xBCpl>6-zNKPtsGV+;sy5|;j2PzH**0v8xbiA$I)z;nGF=f0kD;9o80 zk9RY17@+hFh@PzHbGN#U;3$|?cr@7<-4>(%aAapZ`iHIwt+VtBy0LH(1}{C)3kg3a z$axD|Iyt-X`@2lAY5noiw7Ges2e_Qy#ZG7g7!r}~R1hs0kXTsZV6s<#V!mFs#>11$)A=<$Kuz z!efePeRv291X1dfQaDLD&pz&rySTeJ)gM_}RHN4$p39$|V&}Hy&}+?dW^|({y!MySY<7Jzg!O zf^s9Ppls*TLgM-SI9c;jdIIB_?_E}SC2dbL5<#e@~e!>h*T}3V7Qjuwb}kpd$k{i8yIhNxcWp5 zmhr}|T%BZqGQI3rUBDr76MVryhwI4_s>U>$O&%JFqpibpT73JynWfVyP9vAd8#TkF z@b21lX~Xp&JvEw!njH%gzR#bLZ(HQc-x>V%ncNiNZVJK&R)GfUJ{=r%@BYj|e?tAE z^QvUXJVicpo4=Ku(9&oBMNT}AFs6q4)YmcNKs}&Yl3qAPrANKvAX)cQ0-_JnGLH^% zib2!LEZ+!2?9Xjt;Vsr#lw0vn26t$134ju@;-k>6A|D<1f9{NA&6lpAq^(bHU;73`4+N|^gyuiqNV6V>4tiHuh2}gS>rpliJMYF> z8oV`hL{!l3Cr!jFuS`U(PLYOcg;mf+q*tapy-Rrq73i4^Zr_D8w5!nj+I0u!FF(jA zaa|Fie9MYyVD zY+|f$aJ?0^#q(7Bv(_Rf>!-!26{dkm`vv5_{yhqlfE=-JnrnR3CE&==9oG^BPJ~kT zwR#L%pm6XWo_o>~-xFwsnFCS-K3SEG*9n3OmOIw$y|;&`Jh_54%d_jy$;Tc2Y_spR zsaIH2IH@qw%s;q1T8%_~*JZ&ytt);Fy%vh>g z0w_CsOn#JW{R5GsH?OEs1xr47FZzM7B-{&lNe2bAnJ#CYkWk}CK065tB0jzXv_Ue+ z&!kU}(r(0*6z9AtXe^RO8lX0D<%I!#-wUlmC}2X3R^;0)cuXyXl#01U9aAYGBNq07 zQ0C`^>CvlIsr|X$a@#JlI=!B?psUQx$bJ$^?{z*pe0X~bm^`c#V&s{0MlZ2T-y>}F z;qPquk(Pkc+@>~ButddAyRL%Hp<*0=QjboBwPSW-PHOEB-@Y}(p8aa|yNnqY5iwd} zMW09Non<@D_S6*Yt^2H1H_*KaVR?1$sYP$fe%28z_TYR*uvmX_{;5wg$t{cwp()qhVL2-qx3)1wM*a1-Qko7WOS|m_n5#TglB_)$&TDF_|oOK~F z5`+$vb~~{DgX@<_1p#;oVwb#0EZ3TI6$r55L4sS>BE@dTA#G0aD>84pQZg}wEWXX` zi!o|(wQ#4Y+7TC_zH2&(JiwOOYq`B)ZMOS$()lGjP?Re|ONa!QYMvwZxST#y zqxy;V%ft%25Xi@T@m(kD!pOvW$-@7ISP-Y%N|Ru>0)+_1!Xqh6yx_LcFNm{O`PE!f z1~@)qX~N_wIEb^f5u-?lm)di~;Jr!!^i2p381+NQa^Cc41Q-KE0Pi#aTB>o!<@$c% z*Q&0@cBXHDTZ2s@7*To0m*BYhWJwxEsgU+sx@6~uz6~lY%RS;a{p~AC-LG>IUop{T zr=uIPav^B@XZ77ba;qQ)w|Dxt$Q-fY!I+bh=a*g~Nhdb4cY<~1N)F-&Ui>SR1l(Zm@ zU~{AX%FoF4u=?X-SNV(5k>HE$9dJyNJ1i`5o7!u7exC)~47YqFkDvB6Qvg#`GnW$m zy^C0qY~lL3`HdJoR6L$C-K(+><84eipiDHzaN)Qv$Lvk($43+H>IVoTphDA%<1OV7 zN*wIOIb>eQ)`8RyzvwEjennj>vn!@tYo7b3bB?40+SdR)E#yrS^OTn6TmN05HqK%l zP)ZuCwf1Dqt9nt}M75{7)xl28WCdmP&nv%F5L&v^Csh6lR4+6qW$%QBQl1y9g2m&zLQodlxDQe5t ze74A-pBpIlCOSp+vzs<1{?Jh<5)t`U7lpH47Ax0o_SFnzt-ale`H{M8h&qB)qshbx7Ad#HNB$| zo={%npyBI&{m}+3+ngQmW@l~dYovp+my{i|_PyEoYucnl>EfHm=~;&)!6SYGXW9S; zu#fmK+2v+_G46lfe~J+}-wMrzj+?*^#t`G>E$l*-E7%bPB)Ef578L#cU|%dTi4@hk zp;+bBv%g-&D%NlYIGgkRvGc3A&8QgDxkHez9M?flQx3A$cKc(&?EFW$uDMSdb(QMw9odi zQA?zO%QwiY&D&*2_|La;le8f+v*;YqftP=UX(~GO>fBxRS{^y4gbh*RyJXj3%v!%! zELfdXKw~e(B^eo_RBX;Th4TrEi|2p2@Hg*5bt%Y7ZIk$P-}GUj)gwz0gIBAGiFNn8 zU4&Na+V|69<~TqZyxqSPaeGkw<_`ynX{4vBxwIX_Ypq#9SqSJ=W^R4opKAeSa3L{m z&lHRtdQy{5Ggy~SFu34>`lJ%Zqqg`)p0E)ulwxhQ-;}L>tXPKb-xTPBQs}1)CSM*$ z)G0-&fr8_TI{4boZwExp&4Rt|u<&mI1_Iy+`yv2(?Zm>&!E#z5*xWy{v=^H#tjEA3 z;?O-=$gFu6kw*5=S@@t1PtJM?AR~Jb<+?`D@ni^f9@rf(6M@{G_~V?Cy-fQf^8)n? zQMliUqyBPjXiOCQo#z#uU#^qooR+z_tHzkiIsIG6rn#gWN}koO1iCdnJ2E?}15?Vb zHv1jpiRE-A-RvipUQ>D1lRSvmj z7W3Og%mVd(!g)KZzdxx03y^c4IMqbhs;z8!D&FY;i56b*oQ6$WJxRAsvOKW!wE>ua zD0mc=bW>_*_Ph03EUervAR2#dSHw8J{!GR_N!df0ZL;vK+=3WRYyZ#GgT>l0+k}~1qIqt zS6WmMZM)!rz7z_m`fK9CHVM8F$z&G%jWzFH!hm|FYpam-1QF?Z)lPOHi8}0f1o9EZ zDHf!)*@a?vnvbdJDr!`&Cqj=g-f;y=uFs7+Jzk$Lqc5IOB(A-BqFIgF5T*Qh4dUC& z&KPT!3?JZJ?!2FGI-p$Yz1pL2ZT@|G!_!$1J@*9lY>pk*)lpl#C(!j;vJ^FY@2K3n z2bIo|a*SE!HzHgWM{6~I(^a*s15DV0tUv$zES9Amg!xeS8?y}$1Z}K#^z*n0>1~He8ZPz~6(W>wyBjvX_I$UA!VL?CFEa)<61QoPZ6E_lJpjc$tmFIQ8ZC{iPDf zO2-9y&-i(=bBR|;{%~gM8=O_tg<9F|DLGA&TZU$Dmt&g50M3#7f)z&Uh;BRwc9Fuz z-1wDw3C{{c-~!Wkhp>&;jVmvmxQJZfG-RppOg1^@pFD4B;*!n~lLSmHhRBGUZW=wL zrq<~HsA?@Fl|25*Z_6NPzj7X+}j+I5Z=nZ2_bWFC7 zTuxY^a9H;EY7yk(wd>FO+r1&Q=A6pE#dPEy^vWSAqgg}SUq@acOCxOw#+d|Qm9XIz zRGFSu)D?W`_1iH$=?m+!uJ;FT$Ox9sW_Mi@heywtUNevsjY|GZ+9y&g$4FCA5uwfk% zf*2q%_Xk{=xlxR0V-lrZ<8c^ny0kflt5f{jx54mj|S>kwam*Tak1b3;( z5uPT_RKvI3-JN1xNUUV?slZ3MO>r6QL6oc6t-jxIO{GxTrzD(yK)QDPpLm+v`7|p} z2gy(VZGC&YNw^Sa`UGiI9uXm!9PVra7Ew3o^o&h~XSGDkY zs;^`*cxA6xHK0$Wic0L>UEZ->|DkX6j1#<+RIHQm=vtR9K&^UG7kBp zohssHdJ&9qvGa3a$c)-8t8?K+cH6&N!v~A?-<*cwix;^Kx->T5?74h9@7rrK!RqW( zo2vJoGt#1rN>*x0wCL^Iy~m|a9o+HOx%%|#GJ$IR^@H56PS~Nk&64x4VbME}59a@h zAqcjHo2qUpv4ru+gtljF5cq0UfGkddYadJBa9qH5nTqNu$*6Eyt0)uW)o4o zI;X)D{>#dI8(%wELz1GF@W7BU?iTh#pd^;0(7A|qgmkyuW5DgLce~io- ziyf8;ON`-an0(auAd<+A^E&OM70amakbMh9ou51y1A4-pKz;ftECew{C|lR<2EG2V zc_YNUU-=dDwpU#60DATW|2Y$&LhL{Md zgU?Q#<3)i(y#qZ1bzpAfA$a(p99$lv#>L?Q)GTy zvV36GhERupL#v>^msU5ZmKGe6Pb0Y50Z_*r_EQ}YYljZ+66G=_SknIB zZ29q((LiBZotu{WaHM14bGk|AaDkw7pRRF+J)Lu6k|cfbwnXs?-X|W_s!|@*zFqbI zKH(l_gt(*O6YGy(ey6N?m_zU{`f$GyG}a%6%QeTyYV_*9CTC!O*p|m9#!SnxQYjCr zx0?Pz4pbv$bbm($)?Vpu@0tzWHsS2>)v#t> z@)vmMMS@d6sl1*mp^|5P{sVa2Ydr|^bT4x;;m;G%!7jv|MnM$?)5Ax-e8U)PJP1|j zw%heI;oCzyygq;2y=EfJqsY192X~vsQkXUXIO-m*UbQ!I#`v`?SW-Wg`74otU4C1v*?+r{tKmsUFh+cJOFn%ei*x1dOd6 zFdTHO)IfMfuFw1>5}qFUpQ-y^y)mXc>I%0whfG<;p=IXi5i)%>S(gUE5DNjBWKBzr z_#Wcq8RL0%$M(|1pAfjAhgbM^y%{*VI1Cxpv0wt>7i8%;SsQ+%*i3Mo@%ohOIdc9n_pG$ewjs26kJ$SwQbo^Sk8@-{F@9Fe^jtAAGY004(QP$Jw zW%MMJ!r8%+p2x)wEYW>%pS&FodEgu=HP#p6`0Pp&o4ydp&i>(Z~^F0082|Xag}ZxCR2>ZQ5t; z>A|WQnDS?znrt%Ye7if=pzl|H131>3+~^IjMyPz5ZIm@Fg=5~D$N*x02W!5TwV`kb z5cs|uy{8RXJNs9M*y;%C*|n%;`^I*cHg&PuVYA{FO+N1V#OU2-1R1gU@ug@Xa?q>b ze*(Sl%OV@%(h7UJ-Bu0-x!o!4QqeLO#F)tNvHiyS;USp!I+M=xg@Z(rv47_0_;K4l zshut-0EL`c=&=BxhuXPiRDTm2%{M?W6#9@tfK~EMaZ8WoQZWLcVe@du#-RsW4+z}g zO%&Y$Psw`fY1m|z2k?BkJbNCMBPap;?iM?k=FSWB*Y9pWRVL?x;LPus(N-8_gAb^2 zM!(Sv0At)38Cm$o>ww`vVSsgov{ zCdYVS8Njokqj9l98H3CsY7CH3qo`^|-M;Kkwb$*2&=wdc*1-MVk+~=0au2!?|GVoi zlb*^0KS?Cd6dOGkZxX~LQMUMnNLwVqKjApVqAuG@J2V4|Fd>bG08(u4#?aCTUfwsl z{TWl42|bHA2xHp6o%d%^K-JUV6R+VEJtB_j^juRPb}G3*dpx1g1>G$4D|Q=s2G}3F z;M%u%O4iu*46HuCLsus<$^K?YHU&?^`|2hfnKp0+1Y(JBc(8|T9J{KMB=@c(b3ro2 zd}F1=?F9afZ~ia~4`SjA>gbccd%Z9QB@zWr+A5TT>sE|}xp#hA#&LC`+{fA1q~Mmx z+3>dUL=K{Nck=f3=8SQ@%l>15p%Xoytnks;MkrQJ`6T31H;fuO#pNAfE-KSZmMP3@ zdV?m2M1M4Ni5x`?cm$`5?d(F2Rn)Mc246oiYT~1vAZvcRa4>RjEnY z8NB%znB~)cz7NJ}j%6vQisQW~_;r>G41dCv^mugKaMV#j1*e|WaXQam%?@nx(d*kR z@V)Bo;iEq2(L+y3>yNCS^$`W~tUB=5o*d2ik0YLVGl&)hCY;~+g$9;+2nOIL&ClSa zTuN#y(f|?&^pdT#|Ez4cA^jTq_=Y?0|BCwVa5kW}eTrH&O080>)LunxYP43(*4|X@ zy@`aP_O8aBMb+LrYL6iH9yKCnjTi~R=Y7B5`2U<|Ki74x^W5h?g}(n)O**8@D0X7% zVv1o98ti#psHl7+4G@z!_b)r-6_a96mysLGA`sTw(Ba-7OH=r)+EA&MQ`L_4tX0x^ zh97RKX4$v-B12RoBIkh@0H=2|>nW{0opXR%ix!QX23G=kLL=*dp`Khm?uTVT%=5qU zl4gELxb+XDu+fPBS<+5c=0N?{hS8o(nA9d9b3JdK`8G~5DcxJQ00$!y=d99=`xY)w zp-=NHMv)Qjt9j(z87hEilFo(355}q1@Z61JoxzK+smK_6!asIS7%bE2S{&+M-m`xqaH!!UdGuQ{MHaAnI2l0j<#hiPzCyfQYWoGe0;pPvFm9 zT-J;f{>>*8e=-gaW$IrStoFN!%a~L;Qa~w)fv1KAARO8J#5#Sm8Z{j z#VBuH3O4+H@pkC~JCMTsw_Q%vgPKQz$H#I*U>;hwTpuL-h7cqpS2-lF(*F7RD~i67 zB&2SfG7B>msr15LAdW>s7Alqm5I~DQGk<7+a$^#JgrrLh9s~7$Xle9d(Mgo*vsD77 z{XEUQAQbTUUiSPIpf#1~#b0Qe-(P5Lc5fhIUulw)PBL~)2q*Ap5kw1*lb26_XnqN}@H)z34&U z?4Hgp4HD1g^PpCA;OR=)fDO?6y6cAq?_jC(#}EdCh`QU>IwX)KN;^qF`M~?}m)5JT zP`Yj~INK=K`7hKcie~x|80v(_XO498{ z%^s9ZU(A!qoHI=zrty!fwL9+QM|?owwFzMRf6~AS2FK|Vrouv>ZbLV&|7K8fNZY)u z_sZaM(dD5>N()A^cp|44v_qzt)7Vu!$_hUiHdi!+Gsi3aMT~4UHg=v|7Nr$)@50{9 z>sQQ{(kob4m;|9pD;r0~k%Nr~Vsm~KY04(B>;tCiYDmM}oAtAst`I3MB8-^1o2*4y zg=}#5@v$pYJIkkeVAjPefCS@EAtJ8tvw2n~bX5N#2M1`#1Ca#)q+jL=(#NqNRit|l zV;QlZ#8SMO5qsok2-sFZGbtrhPJ{>uIw=e`rw!G+gd*hp>*aCy>? zvFOe+_1UcHYR?BD$%7t)pjqZN4t<aVv#X#4^luROO`zvzKdla_cXG4rX=K-zCu|J>K`0jQkZn&>rh- z>q*zkKe)=0ROa|p#N4B4M6USBET+lU%s<_26PUl6swgZeP}E@(*;cNu1~k7XyBjLZ z`HpJ}_F3G%AAjI!fpx$zz!qTGfrip=ZgX!>06=%A<7x8awY>DVcI!75wXO&#Uzb9A zHpP!eJ}**?zDle*Ov-CgAC3N^=C%f#m_;69M2Pse-+jVicE?|p7pHyz$4(J<~(i=wYOGLEU<%oiQ19w`jb~5lv3X_mQZu-QAF5j zyURDVYTRjBr8W-84N##WY~6PKt5@Up{EN%>@?_At1##d*91dmXm79_9O;V`0J-&J- zpK)+*(;)3(T5-M#g*qaET^f{}zKnLz!3M-K{r>y{M~!|6dK$UU0{mKS1)jh089wp^ zYd{j+YOQw%d+yQ?e0FVr=dgLi!3zTw+BkM`_el7$gU;YJ$1KNg&gTayx7TlO%4d!M zt?uykNvryn@^{l4w$F`sbSjz%J*O15cln`|JisON88##nfPU9$(VI2@VJ)y4#^{%M z6js!13fnZP*!`ln;HMR^%EyNq@W#*DCvh1TYB6&#vZSlKwm19H~JQ6?WU;JO# z5kR7Ld^&MB&Ca1I>0t!MCA?GexWe&E#x3p=}c>M%Vwn0Sj)w5+(Zh1v781%P3 z*?dm@r{9L5rIzX@KJW$=;>v3tbcad25&#QagCiBE75^)48;W>{K&Dj_?+f*XXBZ!F zR_V>eQ`v_Q#P&x7ry?n1VXlqKT`eXnzX*Ztign-ZO&3fsm%QACV)MCjOiNwT=Rf@? zyE>F^p~Y9X(2UW~pQF3J5l>#Y@4~0|SZ<;CC`X;(%hUO7L*CnkziIFKcH-Xvw5TOh z`hM3OpEVQYrK*@}CPu^F?*}utYCbXE)Y)67QZjfd%Vop$A`N=Hdo30DIIr^(gHF1G zvq(BMeUX^Ne34-3H7~e>%PNPbHFdm}aWQ!^X#P(YL}d5S-T0_|l4n;p!5Gm?U+7fP z!jB{4W`p$yzKYNU-Cx{?4&c<=Xpg`J$C=E?Pll3-8jyKO;5-)-tLhVDbw&n{oQEfp zof$G!Uf&fSJbY-BLUn8LXFT7c=|_TU%MEA`XW4~ncv(2+JJ8ZUq^W_ev5BP!uL%Av z=w6fluf(qR<`3BpQd!vW)pW8Y%HvP2CAg_7n2!jK^-iTP%`tGDw?^{a6(7LAxz1Rv z3)Vtc$M>Et-r$@L&XwlS{{#* z%?2{~t{;8&ntME~&j1RJ1vVdO;f_^L8v1izz0`GA82%;8E0G;Q!Jbk=Rk*Q9ykP{9 zwvb)l!HhkuHYv7Ct~*nRc}1w4!c$`~1^wOja3=&Y)f{t1-=17-oH(8FS!4=SyXujR zcIH(75Xghz3@T(Jzoi37k;X zrbjpVDeqg4O?>>{{~ew0*i0`}sgF>o_H#p@!M32sD=a(I5fiV}V0=RFX)h@kwli7; z{v~k=mD0CJ@X^Ot(aifPRR8Z|g=rE&)N^HKn|fz(F`b91J~!2` zpdH(30GLb5bz4^RmU)Qg7O?xh9x>9j);4v{eWiVeBtoCjmo1|`ldGQ<_GkYnREV0? zsed4$`tejon3!}p!kRPMC4qh3`uXcD?cG!Wnq;f%-WdXr5n&=$7Hf3o7kgRFmrzTP za(2#kiBiBUD&q6^jT@>qc~U25YJpM&x~wo)d1K&e6S9=jH+B`JWUvQAqO;(17FZBK zcx^2vQ;a>m^3e;)2OBOjk*fw3<-QOGF4nJh-Fe7D@)QHwu-olV&mk**>sJ#6D_-mi z1iuSrns!P{xpKoTmeFUY_g+8@<#l$B09pU8vjyc5#dh9+T8)M76ckFg{#yX@SDV~_ z(eN_~_V>2%zB;6U?-2mK>NM_WQG4enWns>yR_=e-!J)2Xsl~^w{mOUq`;0#r6oN5}O5)y#~?c?S*h_@upl zQSy^#c-Szn|MpDkzu#dd+?fu+QO0NO2y=9U~R?6EJ(#tAM3y9Y}Pi`s}tCNwwa2 zq;(h27Sf=*EPTSC>bujBTN7ViPPcB#Ecj15jlExHvqY+ehUaeG>K1x~-ZQ!Nl=-kn zbP)|!kLykq(9nektRqYaa2aJ4Y+HX~@SiSv>0jRh`im5=!Js~^^?mSxJKTMHjY?v8 zVIE67<#Il@C2JLsypu8oPFN?4$Q&t=oadNY1q>5`q0I*^QX6R zD4HPWPxKb^tRKjS|8J1^U8ka6>G!fSg0%b(KS1{x<2i#afYzM<)w5L?N~eI>r8^bS zwB=5inr;qxZGSPSOpxdJUgs4XN6ekD1eco*;qL{MrcO!6N!%)#{81Sf_ZdZ0`s`&5J~>IzYFU(_%TMg&eCB69q)8it?8MkVAL;BV zxo%KgVZB&PE1{6*vo?tl;p6&BEidXAq~a!gR4^!UgbY4PvXoo}g@|oO-m(Et2NS!F zkxPjdsj0BVqIu_(Px80y`06F@sNN1iwwb6x_Vg18aeQURHJ&uTdSTCpvrO)&fEYq6 z3kicA_FqElr+57>tMvTaU`FZ;BtE3n-*3WeS*+rcB3msBs|q#%!*V=^&TH|tO#lug zbPPScgFy-h)yjm{HnbHr;gvzdYz}3F9Hr66nP~TxkIrmX8^Z`nJ)!Zys*x~i5yyiA zFG+l@ZEzN{bPSEKyJWqYPfKh0%D~e4Nnf9$+>x0>>jaPv0B}yxMjKK9dN#INB!6n$ z#~M#K9cC)sbjALErQN{AgfN~}r#G-nd^BSA!%)DPSJ#9DdyI8_|DY6uymG~$2jpi$ zQ>-1y;*M|Wxt4FZ0VYXZ%}P5%g)eAZQA2i3lr@%Rh9>Gi;cZ+?2|6M>ll z>J}}1wB{2?<>u6mTRIXu8b_BX{J-6><*dVT$eTBT8J{L&!+3C;BD1rvuYuhHF;8{8 zQ)^BjmNlgbTkeqPm6b2sPbI>@NHly0`qJ%m4~6m$k2 zIZ(#DZ)glNu@M>{^c+DeTglVV*KE3 zz`=sp7EzVg64RmB#$|Cuymg-H0)A)kf%y1%`aw98n5=6hg=p&P? z9q7RG#bI#wICqbtjv;#y(GF+nK1a}HbB-7tdu9GF$2Pgu_4T~DPkel(q8XK3CJq(1 zAC&RiyOk-5UhcMTr#5%4ji@2Unq*H7_EX#ugj1x}^sm_IViJ>6VtXUE;R+luu`SxS zid2!9y_hO<`fuf*arD<-?Ha_lOOseuPzM8$bU4?A*sC9cZMMek1n--73oL!8@)pjyO^GmWJ17DxbFwwZ?>PB5AxD)L!t0M6y6OJ=5Dsw^k3~)39Ki*1MN7*Gu^uS zcn2ap+}(4ZHAsif2>)KEH>p06lgOv6=0G_2N5}_XW_dM9l$k0lJwQQXB6!9yMal|@ zbXo@n?{+f2J1Zi(fb&EZvlPlPkN^fu8K=Oj}FISvK!kkR6w62xmiS0Lm;_ZMs)w*hs^uk@r zi!K5FkcuzOzxd}}b#6y?Y{2IK?54LDxNG%A1Hq!38nzu+3^^G z<9OWrZhVDE;@Z)L7>Oi}<6d6_9`57qhu@MG<&LdMm}#<#QEi@u&Rwx*`77q-=GEcA z5F^+3wRv~92WIm^XWqu4T34W-bOy5BHI>DC-7&le9XJIc-9a6loj73@iXV;nNy(qJ z_}?B;Rr^s#lI0NVq)>6Gt&Yoi$uQ7-F1?^sOvJTP^G;16O92yqCD%ml3T*6hMT^cD zRhluHrmM&l%HA}1HO(I6d}*G`{Da!T;rmwPC#YHqvN=t^<_i>b>q;Ga&Zq?e7X9hi z^?Kf3tyT`bv}nw;|Liab90mNtt3>fU=4x!t!~U%^>pt;8zx2nV9QVoSvRJMyNuDV4 zv5Vj@Ls|1FBE98xkWy@yx@M=zr+cT&=69&P=^Oe9ecMjl?YCGkkH3tAX6!->L<26a z-Kg!x>&h_wj#OmYG;#eU#N4-U&PK*y#A8;EmkrSyt!&*P^jcaJE-URVhK(k7!I#}7 zc=cQy|EzTJo#&*)%~(VeI)E)Fhz_~56ulIyB(s=2bG$Zhg}O%hcQ48ZpVFc$ty_g! z4u*znqi}Gr_df07jntKq-7VeVMQ z)(4M;)lp~vVqfa%Obd9n-rQ>an>tT`U`AzYOGZSDWm!PYkg=p9;0|orKEhTn=sgt0 zhEQj=P+%$H{P0mS#W^G^8rz;o_v)Z*!`XJw>E^K0rOCb_mN4MOJoyKdyMC7uIc9qs zcSVNQ;d+48Hzg}l)fE*^wjps=YV?!StX^Q@=F8I-e<4F+{+B)Oc60S=0(*9F(Hart!5pnRV_aE_nI zmVuGYkmwOX`_Pu(_Iy=PLlpa;@!Cpv8tCA_a?yVJ`_lSP840FezVboo0}!P7RvJ_R z%{uS@n$mvYl=vgv5%DPIfOfiRRw~*9b@9XND9E9zK|!HOJx+0-$jkGj_(bsap={g} zQgi#dC#hM3c>CmNhb(dN^QiHh$UML0pU2DRz+b5=D+ zsWOWdnM5vx4IeU1IiE;bL5t6G0A|xb+X}sS=8pMK%zk{f4%bmba?HMRt}ek7-rEj< z#fvb0@~Yr8mUaE@v77VUg8ua)b|$=-eH(N0^zd8^ZAeN-cw2_QKw=y(qF13Q6{n|f z|M!)oB>&Kr5_DKHr=^+*rB_gt7sZaMNyJ}&uajMfm8{TL@{0JBCfq;$D#C+yezLb; zd|T_|=f&VkKRy^BFvXaF=-a-5{Z`eS_5AaebP?Q=PG&*LD`(%8Pp%pH^}ee7-`+;_ zFL-A9o*_P$zCSMt-D2j$k$5#MG<@eFcOUf4^oNC|Q?dlH2houFlWYcmg=05|%bh7? zeM~}MtKI5_4Fr&Wj2)r15)|}*x_nSwq*UyI@@N`xST2oVpT5N!XHi{}D^t3LW z)QWYzln?}cv`F-@tpJ-bx;2s|w(^WsB^_*bQKh+#fV_AwFOu0j+L zhwf}0{96B>DmmoSin7%d_O_O{J?}3_-K{!xpZ7NQ_1O(piGa>BCsb~N8fz(%;B5`S z><96Y71j{(#eq3vk|K+edR73!{2M5dH}c1Qy|cIIhJzvK@RXPKN|HlJ7Jc}YZ)x@R z=6GiB+z>kK;_-@eC`_D*ELPO!BWtwUb{4TlSlBi^{-ZU3lRqhQOT4Oj1Jq$=W>0VM z+{dD6A_66!;&N;G?v>?NJnBa*+$P)Xf=(NM%N(uPBV1I>u+xMQdzMejPXd3a z9q)SU?37-g=>@v+(O*b`k6cy3-Gpik&WnP&pu)H1!R2pc?@srJhOS1qYmqM9$E}w4 z(b&5mLotm9<t93*u}%_?&I@<({Y~xI@y}YYbBk;1;BMyD z;^O|%)9HzryP2v{H^`S(=iy}m#Zv?v-Rx5NHb-kYv%5T}@YGaUER3yRC;>xehpD!es1gMDY)rLAZ4`DY_hw!C7jR>u(TKM-eB8GtSm3a zstZT$5maSzy-rWzwtu?^K)ymZW95bGe{|MtH1A7e^2Jj zh&aEAV%iw0dSO6u2A+JGRA_OB+bc^SPqbZ!3Txk_Z=2>rQN z=Vock1nN#SB$^R)M-Sle9ulB-9$_v3b(duYR-=9@OfkQ`+}vu!_ReUIg6erUr9` z7^=Hgn6q0LrwQ1a{$~BSfVntOrqCTWDg;%v-waLrPIGb1|1^KhHvi0K29+EG$LGB| zUTFD@uEmy}4Gw1v9*w+?J$S?KW>^EXx)N2+TC zhONu}Nda!+B~dT04W+#&CLTBJcxA6 zPcr?5?VaFqQp3@hM6^I-40PiJ{kS5$gGlOXz$JK?u_l-{sk z^&S$X))sE=9Q3;%q{FW@Czd1#hf#5VtC(ppQgOw7E`vkrTc^}|fQ-3!v_JhmiKM|HrA2=Bl&?)2e)`;lG^#ZViDV4_R$p6~Js? ztK4U6+^#q|xg*yn)6VP}v(xi9#8;AAr`&=Zn~=W#0?9ANmZ)LzXh=a~C+wtPXUDyM z6h@*TXZ5@<{^5>Hy!mSll$Etg)A9XMn_4$PVj>{!fBQm>(Uu>GWFg-A1U3%q- zIW{nU5#n6K@#^b}C`pGruWVi~g0^OSuGJqe-QckH;(U>ljsE?j&C@rLrKlj?dw~zF zSm$QbZSRUF!86E4BvL`}S%M4Jt+2-qE~L|xS~P;Wva@JQTSLutv&NZLtoo~^Vt0tb zmjFzeDM|3wz>BmVNP=3eCmeQOYTx*7sZ1kyw%Bu;z85%+ zq@9l@iwHik5aU-k`WKtEIk@&K@n2U<)!}T5MvHm-%|$QF;vQ0)G6^N?rpU-HIrwZR z;|I7qQ_QvKy}ZrK1%N&Zke^v|DL2$UYEX<&c;LkykuJR<52H7suV3J^j*J6JKh0PN z#Oy6qY&&6Fk5bo94sA$KmQvJsD9MwS`}qFif2tL-SS$0dpI?Zc(v;*oAHxCD4|MA- z4F(8{p5fONvZqT8@lF=nGL{2+4*D_s$B(k5}$UmeZ7|j zD(=(@Hiu`Ke7^e^)z#Ito@z{&pknX+4Hje$XR;()V40J6`k3|ScoU!Pabun5@9%mP zmE0H)8ujqF3@j`{ssH>D@QaMH5^8TCZ^LDO{!!%PNEn6MW7YyC+i#)^Ow8An7w4hu zJ@(nP%+vtDo!CBc0r?3jw%d0#ygUU24b7gQ#AL4HJ^wT?jFCKsgZ06I)s3?0qQi$N zB1!(9M3$G;5+Nl%L^iTl=&#ok5~E5*pOeBWrLW$koe8@$Zw6)W)1O4YY46?P5(SAV zQT%^;4ds0^Zq*?DWKH2F&`MIl^ zWEn%ensMHAjJ3`FI1qZl*{@K`N&MXJDJ!0e+qa*e+GM{4^Tk)bR+MV8-stG&VK7`i zKAqZPTO9O+%>d^;IPwo^(&- z+FY-X4}F7=lL%`%MHaXyLv>oz)~+?>bxYyv?uV!4Q$xcnTb0^<-wehR<%%U;Jo>Og9FXpA z7+m9CzO^|~+=lCrvnjn1kK-e#&g&3sd&NfXGTJ0kul{Ll{gzl81UqJ8_%IE*41!RmC`9Gbpt%HjA}7%@P?8(&foUCm1E*2&oP zA?!^}75N2RqeGh;addDgdKQg0I&z5<894GRqif|!!3NMzWJqa_F-WrD_LYmrp1Hn| z-7Lagf`8mNvVumy?6;R;ff`k9|FlT-ilx{F(5Q|&)E(*xCmJ>xaZjpw`2yF}9d;*_1R z_t7&i=K$3fV-{5>8-EF-Ja#@rS&T{rkI-8f{%WI`b)?cK3Er*wIuc1Bfos##&3)2p zP)wC7<6gKp`E7wy8J?h-et+SU-WxMo1qIc0l;u17=TaMHv%A&z!NcLz_iUq}^ALcRQGp zO3#doE5|#DE|A17N&RrT%=+<_Q}UAjR}>vMemq*pZZSq4keZc7wkj?Tyw0KDeUqAX zGZq}z9c5m3xA==aFv2W4<~sN*{{4?ULGuufMXW;sxyI+iSm?i7hO@%9UYV(+`Q>Nos%vF8g!Usd2P z;4~-_8`!v6@(tpz_4Q(RM26{pkU|)UyNr=ihw-ukPHw<UpU+AXw!RaEXpRZ`!! zYg8dc?5IoMJQ2hB>hz-+?AEJm77QYbCtHtF_p0^ms1x@`UMtAF;}i{5AxiVl9DDpj zl)*5)Ng<4^TDD4i$KlbhQ-E&f_bUF+KzD6OX^sBayL(UNNV{|$loE2{yD|2UlLV?J z@Ig(y`w&7yeCv-`?uUV^&4RXrHsy&k@i}adNm;XgZ!a@xnvjG)yI_LjRiUqV%gYIh zTK1D&S;x6J%jL!y86wNhlMbcxK=q;CDA?OTEGBAUdVZ$JYB=ElyA%2HUEC_MuhHw9 zfP)~1CR0x8cHDC6+A8>NSYxQ2z$vA2UJn>pzZdq@C^#Xoh zdqe|=^fm{HmPOP#EjbbH25nT$CZP%K7azkF(mG$3cnFnvV!sc|V%0fVJ$l8KpsRTu zO8L$dH*_-Z+K;9`{p&$Rca2+turcwk=8~cyK0rNk55^Im*gM#q=U-^i{<0)$3uHRn zH_J=aK6A*?VLE!3Hi&0;r$KN%3v1#-jxKH%pl+cXKmYXX5gm8@@y1#xCav0t9od(z z48bdZip}mIsrXig{8+&@W$YEwRGTr);Lw|2E0DvqPPPlK%Q*y-eRpGMtZQa*dHiOB zm&!{b3*PxxlCIhz1he8Qe_ituN*=VlqosmzZgl~c62oxde$5Fm7!q248t=D%7jc(T&EAIMN0uPq5-R!nvG8HJu)x# z2l7Bbq!k*ScO@_{>}1p$JUt%!O}$q309mlnN$TVTn`5E)<0cDkchxB5N9ij>^1C4R z#OSfF27Mj!AhRy0lnNE`7ddO(RS@~@s9$AV72Rat8_}SIGlyS`bO`b4OLVX-@+it2;l!x9Kc))(Q=DJL~4JFw^ z(QdVI!ny}MfWXZX+W7j09)ZfAZ3qAKqN*1(7zzgC2SM1%t1q&GJt^ZKz5~NjeW$5Z JrC|B>e*nH7H{}2T literal 0 HcmV?d00001 diff --git a/casdk-docs/docs/tutorial-extras/manage-docs-versions.md b/casdk-docs/docs/tutorial-extras/manage-docs-versions.md new file mode 100644 index 000000000..e12c3f344 --- /dev/null +++ b/casdk-docs/docs/tutorial-extras/manage-docs-versions.md @@ -0,0 +1,55 @@ +--- +sidebar_position: 1 +--- + +# Manage Docs Versions + +Docusaurus can manage multiple versions of your docs. + +## Create a docs version + +Release a version 1.0 of your project: + +```bash +npm run docusaurus docs:version 1.0 +``` + +The `docs` folder is copied into `versioned_docs/version-1.0` and `versions.json` is created. + +Your docs now have 2 versions: + +- `1.0` at `http://localhost:3000/docs/` for the version 1.0 docs +- `current` at `http://localhost:3000/docs/next/` for the **upcoming, unreleased docs** + +## Add a Version Dropdown + +To navigate seamlessly across versions, add a version dropdown. + +Modify the `docusaurus.config.js` file: + +```js title="docusaurus.config.js" +module.exports = { + themeConfig: { + navbar: { + items: [ + // highlight-start + { + type: 'docsVersionDropdown', + }, + // highlight-end + ], + }, + }, +}; +``` + +The docs version dropdown appears in your navbar: + +![Docs Version Dropdown](./img/docsVersionDropdown.png) + +## Update an existing version + +It is possible to edit versioned docs in their respective folder: + +- `versioned_docs/version-1.0/hello.md` updates `http://localhost:3000/docs/hello` +- `docs/hello.md` updates `http://localhost:3000/docs/next/hello` diff --git a/casdk-docs/docs/tutorial-extras/translate-your-site.md b/casdk-docs/docs/tutorial-extras/translate-your-site.md new file mode 100644 index 000000000..caeaffb05 --- /dev/null +++ b/casdk-docs/docs/tutorial-extras/translate-your-site.md @@ -0,0 +1,88 @@ +--- +sidebar_position: 2 +--- + +# Translate your site + +Let's translate `docs/intro.md` to French. + +## Configure i18n + +Modify `docusaurus.config.js` to add support for the `fr` locale: + +```js title="docusaurus.config.js" +module.exports = { + i18n: { + defaultLocale: 'en', + locales: ['en', 'fr'], + }, +}; +``` + +## Translate a doc + +Copy the `docs/intro.md` file to the `i18n/fr` folder: + +```bash +mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/ + +cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md +``` + +Translate `i18n/fr/docusaurus-plugin-content-docs/current/intro.md` in French. + +## Start your localized site + +Start your site on the French locale: + +```bash +npm run start -- --locale fr +``` + +Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated. + +:::caution + +In development, you can only use one locale at a same time. + +::: + +## Add a Locale Dropdown + +To navigate seamlessly across languages, add a locale dropdown. + +Modify the `docusaurus.config.js` file: + +```js title="docusaurus.config.js" +module.exports = { + themeConfig: { + navbar: { + items: [ + // highlight-start + { + type: 'localeDropdown', + }, + // highlight-end + ], + }, + }, +}; +``` + +The locale dropdown now appears in your navbar: + +![Locale Dropdown](./img/localeDropdown.png) + +## Build your localized site + +Build your site for a specific locale: + +```bash +npm run build -- --locale fr +``` + +Or build your site to include all the locales at once: + +```bash +npm run build +``` diff --git a/casdk-docs/docusaurus.config.js b/casdk-docs/docusaurus.config.js new file mode 100644 index 000000000..dc1117c35 --- /dev/null +++ b/casdk-docs/docusaurus.config.js @@ -0,0 +1,135 @@ +// @ts-check +// Note: type annotations allow type checking and IDEs autocompletion + +const lightCodeTheme = require('prism-react-renderer/themes/github'); +const darkCodeTheme = require('prism-react-renderer/themes/dracula'); + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: 'Carbon Aware SDK', + tagline: 'An SDK to enable the creation of carbon aware applications, that do more when the electricity comes from clean low-carbon sources and less when it does not.', + favicon: 'img/favicon.ico', + + // Set the production url of your site here + url: 'https://green-software-foundation.github.io', + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: '/carbon-aware-sdk', + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. + organizationName: 'Green-Software-Foundation', // Usually your GitHub org/user name. + projectName: 'carbon-aware-sdk', // Usually your repo name. + trailingSlash: false, + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', + + // Even if you don't use internalization, you can use this field to set useful + // metadata like html lang. For example, if your site is Chinese, you may want + // to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + + presets: [ + [ + 'classic', + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + sidebarPath: require.resolve('./sidebars.js'), + // Please change this to your repo. + editUrl: 'https://github.com/Green-Software-Foundation/carbon-aware-sdk', + }, + blog: { + showReadingTime: true, + // Please change this to your repo. + editUrl: + 'https://github.com/Green-Software-Foundation/carbon-aware-sdk', + }, + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + }), + ], + ], + + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + // Replace with your project's social card + image: 'img/docusaurus-social-card.jpg', + navbar: { + title: 'Carbon Aware SDK', + logo: { + alt: 'Carbon Aware SDK Logo', + src: 'img/GSF-logo.jpg', + }, + items: [ + { + type: 'doc', + docId: 'intro', + position: 'left', + label: 'Tutorial', + }, + {to: 'https://greensoftware.foundation/', label: 'GSF', position: 'left'}, + { + href: 'https://github.com/Green-Software-Foundation/carbon-aware-sdk', + label: 'GitHub', + position: 'right', + }, + ], + }, + footer: { + style: 'dark', + links: [ + { + title: 'Docs', + items: [ + { + label: 'Tutorial', + to: '/carbon-aware-sdk/docs/intro', + }, + ], + }, + { + title: 'Community', + items: [ + { + label: 'Linkedin', + href: 'https://www.linkedin.com/company/green-software-foundation/', + }, + { + label: 'Twitter', + href: 'https://twitter.com/gsfcommunity', + }, + { + label: 'Slack (private members only)', + href: 'https://greensoftwarefdn.slack.com/archives/C02JRAV4QEP', + } + ], + }, + { + title: 'More', + items: [ + { + label: 'greensoftware.foundation', + to: 'https://greensoftware.foundation/', + }, + { + label: 'GitHub', + href: 'https://github.com/Green-Software-Foundation/carbon-aware-sdk', + }, + ], + }, + ], + copyright: `Copyright © ${new Date().getFullYear()} GSF, Inc. Built with Docusaurus.`, + }, + prism: { + theme: lightCodeTheme, + darkTheme: darkCodeTheme, + }, + }), +}; + +module.exports = config; diff --git a/casdk-docs/package-lock.json b/casdk-docs/package-lock.json new file mode 100644 index 000000000..8381b08e6 --- /dev/null +++ b/casdk-docs/package-lock.json @@ -0,0 +1,12657 @@ +{ + "name": "casdk-docs", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "casdk-docs", + "version": "0.0.0", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/preset-classic": "2.4.1", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "prism-react-renderer": "^1.3.5", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.4.1", + "@tsconfig/docusaurus": "^1.0.5", + "typescript": "^4.7.4" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.19.1.tgz", + "integrity": "sha512-FYAZWcGsFTTaSAwj9Std8UML3Bu8dyWDncM7Ls8g+58UOe4XYdlgzXWbrIgjaguP63pCCbMoExKr61B+ztK3tw==", + "dependencies": { + "@algolia/cache-common": "4.19.1" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.19.1.tgz", + "integrity": "sha512-XGghi3l0qA38HiqdoUY+wvGyBsGvKZ6U3vTiMBT4hArhP3fOGLXpIINgMiiGjTe4FVlTa5a/7Zf2bwlIHfRqqg==" + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.19.1.tgz", + "integrity": "sha512-+PDWL+XALGvIginigzu8oU6eWw+o76Z8zHbBovWYcrtWOEtinbl7a7UTt3x3lthv+wNuFr/YD1Gf+B+A9V8n5w==", + "dependencies": { + "@algolia/cache-common": "4.19.1" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.19.1.tgz", + "integrity": "sha512-Oy0ritA2k7AMxQ2JwNpfaEcgXEDgeyKu0V7E7xt/ZJRdXfEpZcwp9TOg4TJHC7Ia62gIeT2Y/ynzsxccPw92GA==", + "dependencies": { + "@algolia/client-common": "4.19.1", + "@algolia/client-search": "4.19.1", + "@algolia/transporter": "4.19.1" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.19.1.tgz", + "integrity": "sha512-5QCq2zmgdZLIQhHqwl55ZvKVpLM3DNWjFI4T+bHr3rGu23ew2bLO4YtyxaZeChmDb85jUdPDouDlCumGfk6wOg==", + "dependencies": { + "@algolia/client-common": "4.19.1", + "@algolia/client-search": "4.19.1", + "@algolia/requester-common": "4.19.1", + "@algolia/transporter": "4.19.1" + } + }, + "node_modules/@algolia/client-common": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.19.1.tgz", + "integrity": "sha512-3kAIVqTcPrjfS389KQvKzliC559x+BDRxtWamVJt8IVp7LGnjq+aVAXg4Xogkur1MUrScTZ59/AaUd5EdpyXgA==", + "dependencies": { + "@algolia/requester-common": "4.19.1", + "@algolia/transporter": "4.19.1" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.19.1.tgz", + "integrity": "sha512-8CWz4/H5FA+krm9HMw2HUQenizC/DxUtsI5oYC0Jxxyce1vsr8cb1aEiSJArQT6IzMynrERif1RVWLac1m36xw==", + "dependencies": { + "@algolia/client-common": "4.19.1", + "@algolia/requester-common": "4.19.1", + "@algolia/transporter": "4.19.1" + } + }, + "node_modules/@algolia/client-search": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.19.1.tgz", + "integrity": "sha512-mBecfMFS4N+yK/p0ZbK53vrZbL6OtWMk8YmnOv1i0LXx4pelY8TFhqKoTit3NPVPwoSNN0vdSN9dTu1xr1XOVw==", + "dependencies": { + "@algolia/client-common": "4.19.1", + "@algolia/requester-common": "4.19.1", + "@algolia/transporter": "4.19.1" + } + }, + "node_modules/@algolia/events": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" + }, + "node_modules/@algolia/logger-common": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.19.1.tgz", + "integrity": "sha512-i6pLPZW/+/YXKis8gpmSiNk1lOmYCmRI6+x6d2Qk1OdfvX051nRVdalRbEcVTpSQX6FQAoyeaui0cUfLYW5Elw==" + }, + "node_modules/@algolia/logger-console": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.19.1.tgz", + "integrity": "sha512-jj72k9GKb9W0c7TyC3cuZtTr0CngLBLmc8trzZlXdfvQiigpUdvTi1KoWIb2ZMcRBG7Tl8hSb81zEY3zI2RlXg==", + "dependencies": { + "@algolia/logger-common": "4.19.1" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.19.1.tgz", + "integrity": "sha512-09K/+t7lptsweRTueHnSnmPqIxbHMowejAkn9XIcJMLdseS3zl8ObnS5GWea86mu3vy4+8H+ZBKkUN82Zsq/zg==", + "dependencies": { + "@algolia/requester-common": "4.19.1" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.19.1.tgz", + "integrity": "sha512-BisRkcWVxrDzF1YPhAckmi2CFYK+jdMT60q10d7z3PX+w6fPPukxHRnZwooiTUrzFe50UBmLItGizWHP5bDzVQ==" + }, + "node_modules/@algolia/requester-node-http": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.19.1.tgz", + "integrity": "sha512-6DK52DHviBHTG2BK/Vv2GIlEw7i+vxm7ypZW0Z7vybGCNDeWzADx+/TmxjkES2h15+FZOqVf/Ja677gePsVItA==", + "dependencies": { + "@algolia/requester-common": "4.19.1" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.19.1.tgz", + "integrity": "sha512-nkpvPWbpuzxo1flEYqNIbGz7xhfhGOKGAZS7tzC+TELgEmi7z99qRyTfNSUlW7LZmB3ACdnqAo+9A9KFBENviQ==", + "dependencies": { + "@algolia/cache-common": "4.19.1", + "@algolia/logger-common": "4.19.1", + "@algolia/requester-common": "4.19.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "dependencies": { + "@babel/highlight": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", + "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "dependencies": { + "@babel/types": "^7.22.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", + "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", + "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz", + "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", + "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", + "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", + "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", + "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.6", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", + "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.5", + "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.22.5.tgz", + "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", + "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz", + "integrity": "sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", + "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", + "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", + "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", + "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", + "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", + "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", + "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", + "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", + "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", + "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", + "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", + "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", + "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", + "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "dependencies": { + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", + "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", + "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", + "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", + "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz", + "integrity": "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", + "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", + "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz", + "integrity": "sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz", + "integrity": "sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", + "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", + "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.7", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.5", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.5", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", + "@babel/plugin-transform-numeric-separator": "^7.22.5", + "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.6", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.5", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.5", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.5.tgz", + "integrity": "sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.5", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz", + "integrity": "sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "node_modules/@babel/runtime": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", + "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.6.tgz", + "integrity": "sha512-M+37LLIRBTEVjktoJjbw4KVhupF0U/3PYUCbBwgAd9k17hoKhRu1n935QiG7Tuxv0LJOMrb2vuKEeYUlv0iyiw==", + "dependencies": { + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", + "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.7", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/types": "^7.22.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@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, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.1.tgz", + "integrity": "sha512-2Pu9HDg/uP/IT10rbQ+4OrTQuxIWdKVUEdcw9/w7kZJv9NeHS6skJx1xuRiFyoGKwAzcHXnLp7csE99sj+O1YA==" + }, + "node_modules/@docsearch/react": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.1.tgz", + "integrity": "sha512-t5mEODdLzZq4PTFAm/dvqcvZFdPDMdfPE5rJS5SC8OUq9mPzxEy6b+9THIqNM9P0ocCb4UC5jqBrxKclnuIbzQ==", + "dependencies": { + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.5.1", + "algoliasearch": "^4.0.0" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@docusaurus/core": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.4.1.tgz", + "integrity": "sha512-SNsY7PshK3Ri7vtsLXVeAJGS50nJN3RgF836zkyUfAD01Fq+sAk5EwWgLw+nnm5KVNGDu7PRR2kRGDsWvqpo0g==", + "dependencies": { + "@babel/core": "^7.18.6", + "@babel/generator": "^7.18.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.18.6", + "@babel/preset-env": "^7.18.6", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@babel/runtime": "^7.18.6", + "@babel/runtime-corejs3": "^7.18.6", + "@babel/traverse": "^7.18.8", + "@docusaurus/cssnano-preset": "2.4.1", + "@docusaurus/logger": "2.4.1", + "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-common": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "@slorber/static-site-generator-webpack-plugin": "^4.0.7", + "@svgr/webpack": "^6.2.1", + "autoprefixer": "^10.4.7", + "babel-loader": "^8.2.5", + "babel-plugin-dynamic-import-node": "^2.3.3", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "clean-css": "^5.3.0", + "cli-table3": "^0.6.2", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "copy-webpack-plugin": "^11.0.0", + "core-js": "^3.23.3", + "css-loader": "^6.7.1", + "css-minimizer-webpack-plugin": "^4.0.0", + "cssnano": "^5.1.12", + "del": "^6.1.1", + "detect-port": "^1.3.0", + "escape-html": "^1.0.3", + "eta": "^2.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "html-minifier-terser": "^6.1.0", + "html-tags": "^3.2.0", + "html-webpack-plugin": "^5.5.0", + "import-fresh": "^3.3.0", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "mini-css-extract-plugin": "^2.6.1", + "postcss": "^8.4.14", + "postcss-loader": "^7.0.0", + "prompts": "^2.4.2", + "react-dev-utils": "^12.0.1", + "react-helmet-async": "^1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.3.3", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.3", + "rtl-detect": "^1.0.4", + "semver": "^7.3.7", + "serve-handler": "^6.1.3", + "shelljs": "^0.8.5", + "terser-webpack-plugin": "^5.3.3", + "tslib": "^2.4.0", + "update-notifier": "^5.1.0", + "url-loader": "^4.1.1", + "wait-on": "^6.0.1", + "webpack": "^5.73.0", + "webpack-bundle-analyzer": "^4.5.0", + "webpack-dev-server": "^4.9.3", + "webpack-merge": "^5.8.0", + "webpackbar": "^5.0.2" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.4.1.tgz", + "integrity": "sha512-ka+vqXwtcW1NbXxWsh6yA1Ckii1klY9E53cJ4O9J09nkMBgrNX3iEFED1fWdv8wf4mJjvGi5RLZ2p9hJNjsLyQ==", + "dependencies": { + "cssnano-preset-advanced": "^5.3.8", + "postcss": "^8.4.14", + "postcss-sort-media-queries": "^4.2.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/logger": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.4.1.tgz", + "integrity": "sha512-5h5ysIIWYIDHyTVd8BjheZmQZmEgWDR54aQ1BX9pjFfpyzFo5puKXKYrYJXbjEHGyVhEzmB9UXwbxGfaZhOjcg==", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.1.tgz", + "integrity": "sha512-4KhUhEavteIAmbBj7LVFnrVYDiU51H5YWW1zY6SmBSte/YLhDutztLTBE0PQl1Grux1jzUJeaSvAzHpTn6JJDQ==", + "dependencies": { + "@babel/parser": "^7.18.8", + "@babel/traverse": "^7.18.8", + "@docusaurus/logger": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@mdx-js/mdx": "^1.6.22", + "escape-html": "^1.0.3", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "image-size": "^1.0.1", + "mdast-util-to-string": "^2.0.0", + "remark-emoji": "^2.2.0", + "stringify-object": "^3.3.0", + "tslib": "^2.4.0", + "unified": "^9.2.2", + "unist-util-visit": "^2.0.3", + "url-loader": "^4.1.1", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/module-type-aliases": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.1.tgz", + "integrity": "sha512-gLBuIFM8Dp2XOCWffUDSjtxY7jQgKvYujt7Mx5s4FCTfoL5dN1EVbnrn+O2Wvh8b0a77D57qoIDY7ghgmatR1A==", + "dependencies": { + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/types": "2.4.1", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "*", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.1.tgz", + "integrity": "sha512-E2i7Knz5YIbE1XELI6RlTnZnGgS52cUO4BlCiCUCvQHbR+s1xeIWz4C6BtaVnlug0Ccz7nFSksfwDpVlkujg5Q==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/logger": "2.4.1", + "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-common": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "cheerio": "^1.0.0-rc.12", + "feed": "^4.2.2", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "reading-time": "^1.5.0", + "tslib": "^2.4.0", + "unist-util-visit": "^2.0.3", + "utility-types": "^3.10.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.4.1.tgz", + "integrity": "sha512-Lo7lSIcpswa2Kv4HEeUcGYqaasMUQNpjTXpV0N8G6jXgZaQurqp7E8NGYeGbDXnb48czmHWbzDL4S3+BbK0VzA==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/logger": "2.4.1", + "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/module-type-aliases": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "@types/react-router-config": "^5.0.6", + "combine-promises": "^1.1.0", + "fs-extra": "^10.1.0", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0", + "utility-types": "^3.10.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.4.1.tgz", + "integrity": "sha512-/UjuH/76KLaUlL+o1OvyORynv6FURzjurSjvn2lbWTFc4tpYY2qLYTlKpTCBVPhlLUQsfyFnshEJDLmPneq2oA==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "fs-extra": "^10.1.0", + "tslib": "^2.4.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.4.1.tgz", + "integrity": "sha512-7Yu9UPzRShlrH/G8btOpR0e6INFZr0EegWplMjOqelIwAcx3PKyR8mgPTxGTxcqiYj6hxSCRN0D8R7YrzImwNA==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils": "2.4.1", + "fs-extra": "^10.1.0", + "react-json-view": "^1.21.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.4.1.tgz", + "integrity": "sha512-dyZJdJiCoL+rcfnm0RPkLt/o732HvLiEwmtoNzOoz9MSZz117UH2J6U2vUDtzUzwtFLIf32KkeyzisbwUCgcaQ==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.4.1.tgz", + "integrity": "sha512-mKIefK+2kGTQBYvloNEKtDmnRD7bxHLsBcxgnbt4oZwzi2nxCGjPX6+9SQO2KCN5HZbNrYmGo5GJfMgoRvy6uA==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-2.4.1.tgz", + "integrity": "sha512-Zg4Ii9CMOLfpeV2nG74lVTWNtisFaH9QNtEw48R5QE1KIwDBdTVaiSA18G1EujZjrzJJzXN79VhINSbOJO/r3g==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.4.1.tgz", + "integrity": "sha512-lZx+ijt/+atQ3FVE8FOHV/+X3kuok688OydDXrqKRJyXBJZKgGjA2Qa8RjQ4f27V2woaXhtnyrdPop/+OjVMRg==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/logger": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-common": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "fs-extra": "^10.1.0", + "sitemap": "^7.1.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.4.1.tgz", + "integrity": "sha512-P4//+I4zDqQJ+UDgoFrjIFaQ1MeS9UD1cvxVQaI6O7iBmiHQm0MGROP1TbE7HlxlDPXFJjZUK3x3cAoK63smGQ==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/plugin-content-blog": "2.4.1", + "@docusaurus/plugin-content-docs": "2.4.1", + "@docusaurus/plugin-content-pages": "2.4.1", + "@docusaurus/plugin-debug": "2.4.1", + "@docusaurus/plugin-google-analytics": "2.4.1", + "@docusaurus/plugin-google-gtag": "2.4.1", + "@docusaurus/plugin-google-tag-manager": "2.4.1", + "@docusaurus/plugin-sitemap": "2.4.1", + "@docusaurus/theme-classic": "2.4.1", + "@docusaurus/theme-common": "2.4.1", + "@docusaurus/theme-search-algolia": "2.4.1", + "@docusaurus/types": "2.4.1" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/react-loadable": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "dependencies": { + "@types/react": "*", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@docusaurus/theme-classic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.4.1.tgz", + "integrity": "sha512-Rz0wKUa+LTW1PLXmwnf8mn85EBzaGSt6qamqtmnh9Hflkc+EqiYMhtUJeLdV+wsgYq4aG0ANc+bpUDpsUhdnwg==", + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/module-type-aliases": "2.4.1", + "@docusaurus/plugin-content-blog": "2.4.1", + "@docusaurus/plugin-content-docs": "2.4.1", + "@docusaurus/plugin-content-pages": "2.4.1", + "@docusaurus/theme-common": "2.4.1", + "@docusaurus/theme-translations": "2.4.1", + "@docusaurus/types": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-common": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "copy-text-to-clipboard": "^3.0.1", + "infima": "0.2.0-alpha.43", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.4.14", + "prism-react-renderer": "^1.3.5", + "prismjs": "^1.28.0", + "react-router-dom": "^5.3.3", + "rtlcss": "^3.5.0", + "tslib": "^2.4.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-common": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.4.1.tgz", + "integrity": "sha512-G7Zau1W5rQTaFFB3x3soQoZpkgMbl/SYNG8PfMFIjKa3M3q8n0m/GRf5/H/e5BqOvt8c+ZWIXGCiz+kUCSHovA==", + "dependencies": { + "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/module-type-aliases": "2.4.1", + "@docusaurus/plugin-content-blog": "2.4.1", + "@docusaurus/plugin-content-docs": "2.4.1", + "@docusaurus/plugin-content-pages": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-common": "2.4.1", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^1.2.1", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^1.3.5", + "tslib": "^2.4.0", + "use-sync-external-store": "^1.2.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-search-algolia": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.1.tgz", + "integrity": "sha512-6BcqW2lnLhZCXuMAvPRezFs1DpmEKzXFKlYjruuas+Xy3AQeFzDJKTJFIm49N77WFCTyxff8d3E4Q9pi/+5McQ==", + "dependencies": { + "@docsearch/react": "^3.1.1", + "@docusaurus/core": "2.4.1", + "@docusaurus/logger": "2.4.1", + "@docusaurus/plugin-content-docs": "2.4.1", + "@docusaurus/theme-common": "2.4.1", + "@docusaurus/theme-translations": "2.4.1", + "@docusaurus/utils": "2.4.1", + "@docusaurus/utils-validation": "2.4.1", + "algoliasearch": "^4.13.1", + "algoliasearch-helper": "^3.10.0", + "clsx": "^1.2.1", + "eta": "^2.0.0", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-translations": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-2.4.1.tgz", + "integrity": "sha512-T1RAGP+f86CA1kfE8ejZ3T3pUU3XcyvrGMfC/zxCtc2BsnoexuNI9Vk2CmuKCb+Tacvhxjv5unhxXce0+NKyvA==", + "dependencies": { + "fs-extra": "^10.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/types": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.1.tgz", + "integrity": "sha512-0R+cbhpMkhbRXX138UOc/2XZFF8hiZa6ooZAEEJFp5scytzCw4tC1gChMFXrpa3d2tYE6AX8IrOEpSonLmfQuQ==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.6.0", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.73.0", + "webpack-merge": "^5.8.0" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.4.1.tgz", + "integrity": "sha512-1lvEZdAQhKNht9aPXPoh69eeKnV0/62ROhQeFKKxmzd0zkcuE/Oc5Gpnt00y/f5bIsmOsYMY7Pqfm/5rteT5GA==", + "dependencies": { + "@docusaurus/logger": "2.4.1", + "@svgr/webpack": "^6.2.1", + "escape-string-regexp": "^4.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "github-slugger": "^1.4.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "resolve-pathname": "^3.0.0", + "shelljs": "^0.8.5", + "tslib": "^2.4.0", + "url-loader": "^4.1.1", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-common": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.4.1.tgz", + "integrity": "sha512-bCVGdZU+z/qVcIiEQdyx0K13OC5mYwxhSuDUR95oFbKVuXYRrTVrwZIqQljuo1fyJvFTKHiL9L9skQOPokuFNQ==", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.4.1.tgz", + "integrity": "sha512-unII3hlJlDwZ3w8U+pMO3Lx3RhI4YEbY3YNsQj4yzrkZzlpqZOLuAiZK2JyULnD+TKbceKU0WyWkQXtYbLNDFA==", + "dependencies": { + "@docusaurus/logger": "2.4.1", + "@docusaurus/utils": "2.4.1", + "joi": "^17.6.0", + "js-yaml": "^4.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", + "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", + "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", + "dependencies": { + "@jest/schemas": "^29.6.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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, + "node_modules/@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "dependencies": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@mdx-js/mdx/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@mdx-js/mdx/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@mdx-js/mdx/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", + "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0" + } + }, + "node_modules/@mdx-js/util": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", + "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@slorber/static-site-generator-webpack-plugin": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz", + "integrity": "sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==", + "dependencies": { + "eval": "^0.1.8", + "p-map": "^4.0.0", + "webpack-sources": "^3.2.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", + "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", + "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", + "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", + "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", + "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", + "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", + "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", + "@svgr/babel-plugin-remove-jsx-attribute": "*", + "@svgr/babel-plugin-remove-jsx-empty-expression": "*", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", + "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", + "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", + "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", + "dependencies": { + "@babel/types": "^7.20.0", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", + "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/hast-util-to-babel-ast": "^6.5.1", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", + "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", + "dependencies": { + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.8.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz", + "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==", + "dependencies": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-constant-elements": "^7.18.12", + "@babel/preset-env": "^7.19.4", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@svgr/core": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "@svgr/plugin-svgo": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/docusaurus": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@tsconfig/docusaurus/-/docusaurus-1.0.7.tgz", + "integrity": "sha512-ffTXxGIP/IRMCjuzHd6M4/HdIrw1bMfC7Bv8hMkTadnePkpe0lG0oDSdbRpSDZb2rQMAgpbWiR10BvxvNYwYrg==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.1.tgz", + "integrity": "sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/hast": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.5.tgz", + "integrity": "sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" + }, + "node_modules/@types/mdast": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", + "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "node_modules/@types/node": { + "version": "20.4.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.5.tgz", + "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/react": { + "version": "18.2.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.18.tgz", + "integrity": "sha512-da4NTSeBv/P34xoZPhtcLkmZuJ+oYaCxHmyHzwaDQo9RQPBeXV+06gEk2FpqEcsX9XrnNLvRpVh6bdavDSjtiQ==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-config": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.7.tgz", + "integrity": "sha512-pFFVXUIydHlcJP6wJm7sDii5mD/bCmmAY0wQzq+M+uX7bqS95AQqHZWP1iNMKrWVQSuHIzj5qi9BvrtLX2/T4w==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", + "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==" + }, + "node_modules/@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/algoliasearch": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.19.1.tgz", + "integrity": "sha512-IJF5b93b2MgAzcE/tuzW0yOPnuUyRgGAtaPv5UUywXM8kzqfdwZTO4sPJBzoGz1eOy6H9uEchsJsBFTELZSu+g==", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.19.1", + "@algolia/cache-common": "4.19.1", + "@algolia/cache-in-memory": "4.19.1", + "@algolia/client-account": "4.19.1", + "@algolia/client-analytics": "4.19.1", + "@algolia/client-common": "4.19.1", + "@algolia/client-personalization": "4.19.1", + "@algolia/client-search": "4.19.1", + "@algolia/logger-common": "4.19.1", + "@algolia/logger-console": "4.19.1", + "@algolia/requester-browser-xhr": "4.19.1", + "@algolia/requester-common": "4.19.1", + "@algolia/requester-node-http": "4.19.1", + "@algolia/transporter": "4.19.1" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.14.0.tgz", + "integrity": "sha512-gXDXzsSS0YANn5dHr71CUXOo84cN4azhHKUbg71vAWnH+1JBiR4jf7to3t3JHXknXkbV0F7f055vUSBKrltHLQ==", + "dependencies": { + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "node_modules/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-apply-mdx-type-prop": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", + "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@mdx-js/util": "1.6.22" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@babel/core": "^7.11.6" + } + }, + "node_modules/babel-plugin-apply-mdx-type-prop/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-extract-import-names": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", + "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/babel-plugin-extract-import-names/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001518", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001518.tgz", + "integrity": "sha512-rup09/e3I0BKjncL+FesTayKtPrdwKhUufQFd3riFw1hHg8JmIFoInYfB102cFcY/pPgGmdyl/iy+jgiDi2vdA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/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==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/combine-promises": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.1.0.tgz", + "integrity": "sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compressible/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-text-to-clipboard": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", + "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dependencies": { + "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" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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/copy-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.0.tgz", + "integrity": "sha512-rd4rYZNlF3WuoYuRIDEmbR/ga9CeuWX9U05umAvgrrZoHY4Z++cp/xwPQMvUpBB4Ag6J8KfD80G0zwCyaSxDww==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", + "integrity": "sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==", + "dependencies": { + "browserslist": "^4.21.9" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.0.tgz", + "integrity": "sha512-qsev1H+dTNYpDUEURRuOXMvpdtAnNEvQWS/FMJ2Vb5AY8ZP4rAPQldkE27joykZPJTe0+IVgHZYh1P5Xu1/i1g==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", + "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", + "dependencies": { + "cssnano": "^5.1.8", + "jest-worker": "^29.1.2", + "postcss": "^8.4.17", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-advanced": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz", + "integrity": "sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==", + "dependencies": { + "autoprefixer": "^10.4.12", + "cssnano-preset-default": "^5.2.14", + "postcss-discard-unused": "^5.1.0", + "postcss-merge-idents": "^5.1.1", + "postcss-reduce-idents": "^5.2.0", + "postcss-zindex": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", + "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", + "dependencies": { + "repeat-string": "^1.5.4" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + }, + "node_modules/dns-packet": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.478", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.478.tgz", + "integrity": "sha512-qjTA8djMXd+ruoODDFGnRCRBpID+AAfYWCyGtYTNhsuwxI19s8q19gbjKTwRS5z/LyVf5wICaIiPQGLekmbJbA==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/emoticon": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz", + "integrity": "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eta": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", + "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "dependencies": { + "@types/node": "*", + "require-like": ">= 0.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "dependencies": { + "fbjs": "^3.0.0" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flux": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", + "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==", + "dependencies": { + "fbemitter": "^3.0.0", + "fbjs": "^3.0.1" + }, + "peerDependencies": { + "react": "^15.0.2 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/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==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hast-to-hyperscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", + "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", + "dependencies": { + "@types/unist": "^2.0.3", + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^4.0.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "dependencies": { + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", + "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^6.0.0", + "hast-util-to-parse5": "^6.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^3.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/hast-util-to-parse5": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", + "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", + "dependencies": { + "hast-to-hyperscript": "^9.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "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==" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/infima": { + "version": "0.2.0-alpha.43", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz", + "integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-util": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.2.tgz", + "integrity": "sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w==", + "dependencies": { + "@jest/types": "^29.6.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.2.tgz", + "integrity": "sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.6.2", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", + "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.9.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz", + "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", + "dependencies": { + "unist-util-remove": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", + "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.4.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", + "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-unused": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz", + "integrity": "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "dependencies": { + "cosmiconfig": "^8.2.0", + "jiti": "^1.18.2", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/postcss-merge-idents": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz", + "integrity": "sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz", + "integrity": "sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz", + "integrity": "sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==", + "dependencies": { + "sort-css-media-queries": "2.1.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.16" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/postcss-zindex": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz", + "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/prism-react-renderer": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", + "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", + "peerDependencies": { + "react": ">=0.14.9" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==", + "dependencies": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/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==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-error-overlay": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", + "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "node_modules/react-helmet-async": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-json-view": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", + "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", + "dependencies": { + "flux": "^4.0.1", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^8.3.2" + }, + "peerDependencies": { + "react": "^17.0.0 || ^16.3.0 || ^15.5.4", + "react-dom": "^17.0.0 || ^16.3.0 || ^15.5.4" + } + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "dependencies": { + "@types/react": "*", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", + "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "dependencies": { + "@babel/runtime": "^7.10.3" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react-loadable": "*", + "webpack": ">=4.41.1 || 5.x" + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "dependencies": { + "@babel/runtime": "^7.1.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router": ">=5" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.2.tgz", + "integrity": "sha512-uOkyjkEl0ByEK21eCJMHDGBAAd/BoFQBawYK5XItjAmCTeSbjxghd8qnt7nzsLYzidjnoObu6M26xts0YGKsGg==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz", + "integrity": "sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==", + "dependencies": { + "emoticon": "^3.2.0", + "node-emoji": "^1.10.0", + "unist-util-visit": "^2.0.3" + } + }, + "node_modules/remark-footnotes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", + "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "dependencies": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/remark-mdx/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/remark-mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/remark-mdx/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/remark-mdx/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remark-mdx/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dependencies": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", + "dependencies": { + "mdast-squeeze-paragraphs": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "engines": { + "node": "*" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rtl-detect": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz", + "integrity": "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==" + }, + "node_modules/rtlcss": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", + "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", + "dependencies": { + "find-up": "^5.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + } + }, + "node_modules/rtlcss/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/search-insights": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.7.0.tgz", + "integrity": "sha512-GLbVaGgzYEKMvuJbHRhLi1qoBFnjXZGZ6l4LxOYPCp4lI2jDRB3jPU9/XNhMwv6kvnA9slTreq6pvK+b3o3aqg==", + "peer": true, + "engines": { + "node": ">=8.16.0" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", + "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.1.2", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/sitemap": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz", + "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sort-css-media-queries": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz", + "integrity": "sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==", + "engines": { + "node": ">= 6.3.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" + }, + "node_modules/state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.3.tgz", + "integrity": "sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/svgo/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/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==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/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==" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", + "deprecated": "Use String.prototype.trim() instead" + }, + "node_modules/trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", + "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dependencies": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", + "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/update-notifier/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + }, + "node_modules/utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/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==", + "dependencies": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.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.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz", + "integrity": "sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-middleware/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/casdk-docs/package.json b/casdk-docs/package.json new file mode 100644 index 000000000..040d9086a --- /dev/null +++ b/casdk-docs/package.json @@ -0,0 +1,46 @@ +{ + "name": "casdk-docs", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids", + "typecheck": "tsc" + }, + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/preset-classic": "2.4.1", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "prism-react-renderer": "^1.3.5", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.4.1", + "@tsconfig/docusaurus": "^1.0.5", + "typescript": "^4.7.4" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "engines": { + "node": ">=16.14" + } +} diff --git a/casdk-docs/sidebars.js b/casdk-docs/sidebars.js new file mode 100644 index 000000000..9ab54c245 --- /dev/null +++ b/casdk-docs/sidebars.js @@ -0,0 +1,33 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + // By default, Docusaurus generates a sidebar from the docs folder structure + tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], + + // But you can create a sidebar manually + /* + tutorialSidebar: [ + 'intro', + 'hello', + { + type: 'category', + label: 'Tutorial', + items: ['tutorial-basics/create-a-document'], + }, + ], + */ +}; + +module.exports = sidebars; diff --git a/casdk-docs/src/components/HomepageFeatures/index.tsx b/casdk-docs/src/components/HomepageFeatures/index.tsx new file mode 100644 index 000000000..479296bdf --- /dev/null +++ b/casdk-docs/src/components/HomepageFeatures/index.tsx @@ -0,0 +1,81 @@ +import useBaseUrl from '@docusaurus/useBaseUrl'; +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.css'; + +type FeatureItem = { + title: string; + image: string; + description: JSX.Element; +}; + +const FeatureList: FeatureItem[] = [ + { + title: 'Use in your CICD workflow', + image: '/img/undraw_docusaurus_mountain.svg', + description: ( + <> + Highly Recommended - This provides your team with the possibility to deploy your worloads to Regions with least emissions. + + ), + }, + { + title: 'Deploy as a REST end point', + image: '/img/undraw_docusaurus_tree.svg', + description: ( + <> + Highly Recommended - Best for when you can change the code, and deploy separately. This also allows you to manage the Carbon Aware logic independently of the system using it. + + ), + }, + { + title: 'Invoke via command line', + image: '/img/undraw_docusaurus_mountain.svg', + description: ( + <> + Best for use with systems you can not change the code in but can invoke command line. + + ), + }, + { + title: 'Write code against the .NET library', + image: '/img/undraw_docusaurus_react.svg', + description: ( + <> + Best for when you are using .NET, and you have the ability to change the code, and do not have the ability to deploy the WebApi. + + ), + }, +]; + +function Feature({title, image, description}: FeatureItem) { + return ( +
+
+ {title} +
+
+

{title}

+

{description}

+
+
+ ); +} + +export default function HomepageFeatures(): JSX.Element { + return ( +
+
+
+ {FeatureList.map((props, idx) => ( + + ))} +
+
+
+ ); +} diff --git a/casdk-docs/src/components/HomepageFeatures/styles.module.css b/casdk-docs/src/components/HomepageFeatures/styles.module.css new file mode 100644 index 000000000..b248eb2e5 --- /dev/null +++ b/casdk-docs/src/components/HomepageFeatures/styles.module.css @@ -0,0 +1,11 @@ +.features { + display: flex; + align-items: center; + padding: 2rem 0; + width: 100%; +} + +.featureSvg { + height: 200px; + width: 200px; +} diff --git a/casdk-docs/src/css/custom.css b/casdk-docs/src/css/custom.css new file mode 100644 index 000000000..2bc6a4cfd --- /dev/null +++ b/casdk-docs/src/css/custom.css @@ -0,0 +1,30 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #2e8555; + --ifm-color-primary-dark: #29784c; + --ifm-color-primary-darker: #277148; + --ifm-color-primary-darkest: #205d3b; + --ifm-color-primary-light: #33925d; + --ifm-color-primary-lighter: #359962; + --ifm-color-primary-lightest: #3cad6e; + --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); +} + +/* For readability concerns, you should choose a lighter palette in dark mode. */ +[data-theme='dark'] { + --ifm-color-primary: #25c2a0; + --ifm-color-primary-dark: #21af90; + --ifm-color-primary-darker: #1fa588; + --ifm-color-primary-darkest: #1a8870; + --ifm-color-primary-light: #29d5b0; + --ifm-color-primary-lighter: #32d8b4; + --ifm-color-primary-lightest: #4fddbf; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); +} diff --git a/casdk-docs/src/pages/index.module.css b/casdk-docs/src/pages/index.module.css new file mode 100644 index 000000000..9f71a5da7 --- /dev/null +++ b/casdk-docs/src/pages/index.module.css @@ -0,0 +1,23 @@ +/** + * CSS files with the .module.css suffix will be treated as CSS modules + * and scoped locally. + */ + +.heroBanner { + padding: 4rem 0; + text-align: center; + position: relative; + overflow: hidden; +} + +@media screen and (max-width: 996px) { + .heroBanner { + padding: 2rem; + } +} + +.buttons { + display: flex; + align-items: center; + justify-content: center; +} diff --git a/casdk-docs/src/pages/index.tsx b/casdk-docs/src/pages/index.tsx new file mode 100644 index 000000000..305139fba --- /dev/null +++ b/casdk-docs/src/pages/index.tsx @@ -0,0 +1,41 @@ +import React from 'react'; +import clsx from 'clsx'; +import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import Layout from '@theme/Layout'; +import HomepageFeatures from '@site/src/components/HomepageFeatures'; + +import styles from './index.module.css'; + +function HomepageHeader() { + const {siteConfig} = useDocusaurusContext(); + return ( +
+
+

{siteConfig.title}

+

{siteConfig.tagline}

+
+ + Docusaurus Tutorial - 5min ⏱️ + +
+
+
+ ); +} + +export default function Home(): JSX.Element { + const {siteConfig} = useDocusaurusContext(); + return ( + + +
+ +
+
+ ); +} diff --git a/casdk-docs/src/pages/markdown-page.md b/casdk-docs/src/pages/markdown-page.md new file mode 100644 index 000000000..9756c5b66 --- /dev/null +++ b/casdk-docs/src/pages/markdown-page.md @@ -0,0 +1,7 @@ +--- +title: Markdown page example +--- + +# Markdown page example + +You don't need React to write simple standalone pages. diff --git a/casdk-docs/static/.nojekyll b/casdk-docs/static/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/casdk-docs/static/img/GSF-logo.jpg b/casdk-docs/static/img/GSF-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e83e1d463aa11f5eff9156ce2c349202cc65c489 GIT binary patch literal 3643 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
sH`pxVp$E*LSx0bY$^ho1gZ(Ce+BX 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 fgzs%Vr*-jYG(YMS<ttdtee# literal 0 HcmV?d00001 diff --git a/casdk-docs/static/img/docusaurus.png b/casdk-docs/static/img/docusaurus.png new file mode 100644 index 0000000000000000000000000000000000000000..f458149e3c8f53335f28fbc162ae67f55575c881 GIT binary patch literal 5142 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 F{0H{b<4^zq literal 0 HcmV?d00001 diff --git a/casdk-docs/static/img/favicon.ico b/casdk-docs/static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c01d54bcd39a5f853428f3cd5aa0f383d963c484 GIT binary patch literal 3626 zcmb`Je@s(X6vrR`EK3%b%orErlDW({vnABqA zcfaS{d+xbU5JKp0*;0YOg+;Fl!eT)XRuapIwFLL`=imZCSon$`se`_<%@MB=M~KG+ z=EW^FL`w|Bo>*ktlaS^(fut!95`iG5u=SZ8nfDHO#GaTlH1-XG^;vsjUb^gWTVz0+ z^=WR1wv9-2oeR=_;fL0H7rNWqAzGtO(D;`~cX(RcN0w2v24Y8)6t`cS^_ghs`_ho? z{0ka~1Dgo8TfAP$r*ua?>$_V+kZ!-(TvEJ7O2f;Y#tezt$&R4 zLI}=-y@Z!grf*h3>}DUL{km4R>ya_I5Ag#{h_&?+HpKS!;$x3LC#CqUQ8&nM?X))Q zXAy2?`YL4FbC5CgJu(M&Q|>1st8XXLZ|5MgwgjP$m_2Vt0(J z&Gu7bOlkbGzGm2sh?X`){7w69Y$1#@P@7DF{ZE=4%T0NDS)iH`tiPSKpDNW)zmtn( zw;4$f>k)4$LBc>eBAaTZeCM2(iD+sHlj!qd z2GjRJ>f_Qes(+mnzdA^NH?^NB(^o-%Gmg$c8MNMq&`vm@9Ut;*&$xSD)PKH{wBCEC z4P9%NQ;n2s59ffMn8*5)5AAg4-93gBXBDX`A7S& zH-|%S3Wd%T79fk-e&l`{!?lve8_epXhE{d3Hn$Cg!t=-4D(t$cK~7f&4s?t7wr3ZP z*!SRQ-+tr|e1|hbc__J`k3S!rMy<0PHy&R`v#aJv?`Y?2{avK5sQz%=Us()jcNuZV z*$>auD4cEw>;t`+m>h?f?%VFJZj8D|Y1e_SjxG%J4{-AkFtT2+ZZS5UScS~%;dp!V>)7zi`w(xwSd*FS;Lml=f6hn#jq)2is4nkp+aTrV?)F6N z>DY#SU0IZ;*?Hu%tSj4edd~kYNHMFvS&5}#3-M;mBCOCZL3&;2obdG?qZ>rD|zC|Lu|sny76pn2xl|6sk~Hs{X9{8iBW zwiwgQt+@hi`FYMEhX2 \ No newline at end of file diff --git a/casdk-docs/static/img/undraw_docusaurus_mountain.svg b/casdk-docs/static/img/undraw_docusaurus_mountain.svg new file mode 100644 index 000000000..af961c49a --- /dev/null +++ b/casdk-docs/static/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casdk-docs/static/img/undraw_docusaurus_react.svg b/casdk-docs/static/img/undraw_docusaurus_react.svg new file mode 100644 index 000000000..94b5cf08f --- /dev/null +++ b/casdk-docs/static/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casdk-docs/static/img/undraw_docusaurus_tree.svg b/casdk-docs/static/img/undraw_docusaurus_tree.svg new file mode 100644 index 000000000..d9161d339 --- /dev/null +++ b/casdk-docs/static/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casdk-docs/tsconfig.json b/casdk-docs/tsconfig.json new file mode 100644 index 000000000..6f4756980 --- /dev/null +++ b/casdk-docs/tsconfig.json @@ -0,0 +1,7 @@ +{ + // This file is not used in compilation. It is here just for a nice editor experience. + "extends": "@tsconfig/docusaurus/tsconfig.json", + "compilerOptions": { + "baseUrl": "." + } +} diff --git a/docs/architecture/_category_.json b/docs/architecture/_category_.json new file mode 100644 index 000000000..b6440021e --- /dev/null +++ b/docs/architecture/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "Architecture", + "position": 3, + "link": { + "type": "generated-index" + } +} From ac1432f47ba1c8e949389d18cf491397aa9f051d Mon Sep 17 00:00:00 2001 From: danuw Date: Mon, 21 Aug 2023 23:59:57 +0000 Subject: [PATCH 2/4] favicon --- casdk-docs/docusaurus.config.js | 2 +- casdk-docs/static/img/favicon-32x32.png | Bin 0 -> 1487 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 casdk-docs/static/img/favicon-32x32.png diff --git a/casdk-docs/docusaurus.config.js b/casdk-docs/docusaurus.config.js index dc1117c35..f282be71a 100644 --- a/casdk-docs/docusaurus.config.js +++ b/casdk-docs/docusaurus.config.js @@ -8,7 +8,7 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula'); const config = { title: 'Carbon Aware SDK', tagline: 'An SDK to enable the creation of carbon aware applications, that do more when the electricity comes from clean low-carbon sources and less when it does not.', - favicon: 'img/favicon.ico', + favicon: 'img/favicon-32x32.png', // Set the production url of your site here url: 'https://green-software-foundation.github.io', diff --git a/casdk-docs/static/img/favicon-32x32.png b/casdk-docs/static/img/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..7a9c126e9cc301bc0184fd348ebd49cfaec38a40 GIT binary patch literal 1487 zcmV;=1u*)FP)tEJPxh7@`OY3>GZ{ zooQ>QGxOfOb%w5FN?U57K+94Hi1MQXLQAcJil!`~7Hp86ii(N~7#0(L&_QeiDE-Vm z_f2OCWzsgJOmgz>%)95F?|x?;#(c_6=2O}tp1mtfEO5_+iJPMXD)Zhj&_++wLdKt( z78YF#zl$b(58oT98+m3Y479Za2yHM_+C01<0}mHE5nt%U(0Lgh4>1+Q_*9Zx4Ghh9 zA->2-x(^jN!)JB|f_1_`AHNscr<0NY^=t5NdmXu7PDFZ@4SoFK1IVy0foYOhw}VoU z^6@m}ZJ$WG0qcx@nKGDZ?Yk3z82(grj98q4%+DtYDnqDmxjEB37+x?J@kIeJ)pI)& zp|z^P-1-K_EKjDhWBgqJFsj^+jOwXis!lhGJWv>y5MLO;#b6M@)>b^duvmcbN6^fH za${Ztshg)^T*WL}cK~4C0YE~T9iEyggr0u$g^kC~(a6}7B}HhtejPX4+Az9&5t!me z-#Pq-VVcQhiVkPB4Pz^2gL%8iKteeO5Wzsi&6(=PeVIC#(}8vS8}V7waWGdZ8Rx*b zYeMcIV~URSY8%E80HbFBVl1COQWU_mi%JA_P6t-){RW$l90GHvff+KMDJ{kmC57!V z(PIFk%I$D(5divdN_827135U?+>C#3{)d-WE(1%MiM5UUP;=}ESh^jf%1ZIiwQIQC z(t<~e=MmsouFC;bg#bizfvL2KpwaPsnFC7g#=JTvt(^f6XOvgPsFl!AsbG}V zkH_GEOVj~FCI-mwk`n{6efa99ABc@}&6n}ll^`wzn^Ax2S3EE`3rtEEdkwEBRECE8 z^E@c8ACH0A{JR>30l&!Gw=1V3d1E4&tYJ`&iQ1-P*!9av44aoHB3<=h#NrY(p8g$8 z=g;AVrHk8t=ODKKc!C%i637OVG$eiW7G`fq?0OnLx5NRpb}E=h!pJ2h2z|z{T2A>M zmu-S2C!u`LZmd7}9R*~+OoLnziUkoX%fT`{kZNogvn;uLS>Um<~^0x)((4=Z6TPbFQZ4B!FBZ#*!^4>sdX zEUn*-4crAYr&A^5m64~Rr~?xEa$Spo?g1#XdVwZ-L9CzGe>Zi%182|R($%Xd-L->K zlBeE+oprbn4C4C>=kfS^gm$m@FnAzNdedOgcR8d0olfJ`p3AI0OSx3z09>r&Y{apNRQ8UZu&V zpl$-Bnkj-(Qx#d@O2z7Z4X8ePm;$bUmOf z0d>g*zUUGHP|;A2jfW0UP3QoiJHmPZfCAAFE&4&;A9&*lO~$ p29(bKnB0Z`hUj(aF#~r={s%Hg5(48%G9Ul|002ovPDHLkV1l1!sHy+} literal 0 HcmV?d00001 From 8166cf283f80e7a63400b0626cc3408d639f9d25 Mon Sep 17 00:00:00 2001 From: danuw Date: Tue, 22 Aug 2023 01:01:02 +0000 Subject: [PATCH 3/4] reoganising first draft --- casdk-docs/docs/architecture/_category_.json | 2 +- .../architecture/c-sharp-client-library.md | 4 + casdk-docs/docs/architecture/data-sources.md | 5 + .../architecture/decisions/_category_.json | 7 + casdk-docs/docs/intro.md | 47 ---- casdk-docs/docs/linting copy.md | 65 ------ casdk-docs/docs/overview.md | 20 +- casdk-docs/docs/packaging.md | 209 ------------------ casdk-docs/docs/quickstart.md | 4 + .../docs/tutorial-basics/_category_.json | 2 +- .../{ => tutorial-basics}/carbon-aware-cli.md | 0 .../carbon-aware-github-action.md | 0 .../carbon-aware-tools.md | 0 .../carbon-aware-webapi.md | 4 +- .../docs/tutorial-basics/congratulations.md | 23 -- .../{ => tutorial-basics}/containerization.md | 0 .../tutorial-basics/create-a-blog-post.md | 34 --- .../docs/tutorial-basics/create-a-document.md | 57 ----- .../docs/tutorial-basics/create-a-page.md | 43 ---- .../docs/tutorial-basics/deploy-your-site.md | 31 --- .../tutorial-basics/markdown-features.mdx | 150 ------------- .../docs/tutorial-extras/_category_.json | 2 +- .../carbon-aware-library.md | 2 +- .../{ => tutorial-extras}/configuration.md | 0 .../img/docsVersionDropdown.png | Bin 25427 -> 0 bytes .../tutorial-extras/img/localeDropdown.png | Bin 27841 -> 0 bytes .../docs/{ => tutorial-extras}/linting.md | 0 .../tutorial-extras/manage-docs-versions.md | 55 ----- casdk-docs/docs/tutorial-extras/packaging.md | 209 ++++++++++++++++++ .../selecting-a-data-source.md | 6 +- .../tutorial-extras/translate-your-site.md | 88 -------- casdk-docs/docusaurus.config.js | 4 +- 32 files changed, 252 insertions(+), 821 deletions(-) create mode 100644 casdk-docs/docs/architecture/decisions/_category_.json delete mode 100644 casdk-docs/docs/intro.md delete mode 100644 casdk-docs/docs/linting copy.md delete mode 100644 casdk-docs/docs/packaging.md rename casdk-docs/docs/{ => tutorial-basics}/carbon-aware-cli.md (100%) rename casdk-docs/docs/{ => tutorial-basics}/carbon-aware-github-action.md (100%) rename casdk-docs/docs/{ => tutorial-basics}/carbon-aware-tools.md (100%) rename casdk-docs/docs/{ => tutorial-basics}/carbon-aware-webapi.md (99%) delete mode 100644 casdk-docs/docs/tutorial-basics/congratulations.md rename casdk-docs/docs/{ => tutorial-basics}/containerization.md (100%) delete mode 100644 casdk-docs/docs/tutorial-basics/create-a-blog-post.md delete mode 100644 casdk-docs/docs/tutorial-basics/create-a-document.md delete mode 100644 casdk-docs/docs/tutorial-basics/create-a-page.md delete mode 100644 casdk-docs/docs/tutorial-basics/deploy-your-site.md delete mode 100644 casdk-docs/docs/tutorial-basics/markdown-features.mdx rename casdk-docs/docs/{ => tutorial-extras}/carbon-aware-library.md (99%) rename casdk-docs/docs/{ => tutorial-extras}/configuration.md (100%) delete mode 100644 casdk-docs/docs/tutorial-extras/img/docsVersionDropdown.png delete mode 100644 casdk-docs/docs/tutorial-extras/img/localeDropdown.png rename casdk-docs/docs/{ => tutorial-extras}/linting.md (100%) delete mode 100644 casdk-docs/docs/tutorial-extras/manage-docs-versions.md create mode 100644 casdk-docs/docs/tutorial-extras/packaging.md rename casdk-docs/docs/{ => tutorial-extras}/selecting-a-data-source.md (98%) delete mode 100644 casdk-docs/docs/tutorial-extras/translate-your-site.md diff --git a/casdk-docs/docs/architecture/_category_.json b/casdk-docs/docs/architecture/_category_.json index b6440021e..63ac61310 100644 --- a/casdk-docs/docs/architecture/_category_.json +++ b/casdk-docs/docs/architecture/_category_.json @@ -1,6 +1,6 @@ { "label": "Architecture", - "position": 3, + "position": 9, "link": { "type": "generated-index" } diff --git a/casdk-docs/docs/architecture/c-sharp-client-library.md b/casdk-docs/docs/architecture/c-sharp-client-library.md index 3b3376367..6333ebc25 100644 --- a/casdk-docs/docs/architecture/c-sharp-client-library.md +++ b/casdk-docs/docs/architecture/c-sharp-client-library.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 4 +--- + # C\# Client Library This document outlines the designs behind the GSF Carbon Aware C# Client diff --git a/casdk-docs/docs/architecture/data-sources.md b/casdk-docs/docs/architecture/data-sources.md index e0e31acff..fe58e1509 100644 --- a/casdk-docs/docs/architecture/data-sources.md +++ b/casdk-docs/docs/architecture/data-sources.md @@ -1,3 +1,8 @@ +--- +sidebar_position: 3 +--- + + # Data Sources Data sources allow developers easily integrate different data providers into the diff --git a/casdk-docs/docs/architecture/decisions/_category_.json b/casdk-docs/docs/architecture/decisions/_category_.json new file mode 100644 index 000000000..8aba481db --- /dev/null +++ b/casdk-docs/docs/architecture/decisions/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "Architecture Decisions", + "position": 2, + "link": { + "type": "generated-index" + } +} diff --git a/casdk-docs/docs/intro.md b/casdk-docs/docs/intro.md deleted file mode 100644 index 8a2e69d95..000000000 --- a/casdk-docs/docs/intro.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Tutorial Intro - -Let's discover **Docusaurus in less than 5 minutes**. - -## Getting Started - -Get started by **creating a new site**. - -Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**. - -### What you'll need - -- [Node.js](https://nodejs.org/en/download/) version 16.14 or above: - - When installing Node.js, you are recommended to check all checkboxes related to dependencies. - -## Generate a new site - -Generate a new Docusaurus site using the **classic template**. - -The classic template will automatically be added to your project after you run the command: - -```bash -npm init docusaurus@latest my-website classic -``` - -You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor. - -The command also installs all necessary dependencies you need to run Docusaurus. - -## Start your site - -Run the development server: - -```bash -cd my-website -npm run start -``` - -The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there. - -The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/. - -Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes. diff --git a/casdk-docs/docs/linting copy.md b/casdk-docs/docs/linting copy.md deleted file mode 100644 index 102819dab..000000000 --- a/casdk-docs/docs/linting copy.md +++ /dev/null @@ -1,65 +0,0 @@ -# Linting - -- [Linting](#linting) - - [Markdown Linting](#markdown-linting) - - [Github Action](#github-action) - - [Linting Locally](#linting-locally) - - [VS Code Extension](#vs-code-extension) - -## Markdown Linting - -Per [ADR 0004](./architecture/decisions/0004-documentation.md), documentation -will be linted using -[markdownlint](https://github.com/DavidAnson/markdownlint/tree/main) to enforce -file consistency for readers and authors. - -This repo contains a -[custom.markdownlint.jsonc](../../custom.markdownlint.jsonc) configuration file -at the root which handles the markdown rules enforced. This file can be used -locally (to check/fix violations) and is also consumed by the Github Action -pipeline to check for consistency on PRs. - -### Github Action - -The [linting.yaml](../.github/workflows/linting.yaml) workflow contains the -github action that will run on for each PR. The `"Markdown Linting"` job handles -running the [markdown linter](https://github.com/DavidAnson/markdownlint-cli2) -using the [custom.markdownlint.jsonc](../../custom.markdownlint.jsonc) config -file at the root of the repo. This action is non-blocking, and is meant to -provide information to the user about violations . - -### Linting Locally - -In order to run markdown linting locally, you will need to have an installation -of [markdownlint](https://github.com/DavidAnson/markdownlint). We reccomend the -[markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2), which is -the same used by the Github action pipeline. - -The various CLI commands are detailed in the Github docs but the command the -pipeline will run (checks all files given the custom config except for .github -folder) is: - -```bash -markdownlint-cli2-config "./custom.markdownlint.jsonc" {"*[^.github]/**,*"}.md -``` - -The result will list all of the violations including the file, line number, and -code for the violation. An example successful result is included below: - -```bash -Finding: **/*.md -Linting: 35 file(s) -Summary: 0 error(s) -``` - -#### VS Code Extension - -If you are developing in VS Code, there is also a -[markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) -extension which you can install. This extension will let you leverage the VS -Code formatter to fix your markdown files. While it may not be able to fix all -of the violations, it will catch most of the small formatting ones. - -> Note the extension uses the default formatting configuration. If you want to -> auto-format based on our custom config file, you will need to manually include -> those in the extensions' settings. diff --git a/casdk-docs/docs/overview.md b/casdk-docs/docs/overview.md index cea8ddcd7..d9fba355c 100644 --- a/casdk-docs/docs/overview.md +++ b/casdk-docs/docs/overview.md @@ -11,11 +11,11 @@ different endpoints to provide the most flexibility to integrate to your environment: - You can run the application using the [CLI](./src/CarbonAware.CLI) and refer - to more documentation [here](./carbon-aware-cli.md). + to more documentation [here](./tutorial-basics/carbon-aware-cli.md). - You can build a container containing the [WebAPI](./src/CarbonAware.WebApi) and connect via REST requests and refer to more documentation - [here](./carbon-aware-webapi.md). + [here](./tutorial-basics/carbon-aware-webapi.md). - You can reference the [Carbon Aware C# Library](./src/GSF.CarbonAware) in your projects and make use of its functionalities and features. @@ -37,11 +37,11 @@ refer to the [Architecture directory](./architecture/). The Carbon Aware SDK provides a C# Client Library with handlers that replicates the Web API, CLI and SDK functionality. See: -- [carbon-aware-library.md](./carbon-aware-library.md) for more information +- [carbon-aware-library.md](./tutorial-extras/carbon-aware-library.md) for more information about library features. -- [packaging.md](./packaging.md) for details on how to package and consume the +- [packaging.md](./tutorial-extras/packaging.md) for details on how to package and consume the library. -- [gsf-carbon-aware-library-package.md](./gsf-carbon-aware-library-package.md) +- [packaging.md](./tutorial-extras/packaging.md) for instructions on integrating the library in other projects with dependency injection. @@ -56,13 +56,13 @@ environment: - WattTime account - See [instruction on WattTime](https://www.watttime.org/api-documentation/#register-new-user) for details (or use our python samples as described - [here](samples/watttime-registration/readme.md)). + [here](https://github.com/Green-Software-Foundation/carbon-aware-sdk/blob/dev/samples/watttime-registration/readme.md)). - ElectricityMaps account - See [instruction on ElectricityMaps](https://api-portal.electricitymaps.com/home) for details (or setup a [free trial](https://api-portal.electricitymaps.com)). Note that the free trial has some - [restrictions](./docs/selecting-a-data-source.md#restrictions-electricitymaps-free-trial-user) + [restrictions](./tutorial-extras/selecting-a-data-source.md#restrictions-electricitymaps-free-trial-user) - ElectricityMapsFree account - See [instruction on ElectricityMapsFree](https://www.co2signal.com/#Subscriber-Email) for details. @@ -84,7 +84,7 @@ data or Electricity Maps data, you'll need to acquire a license from them and set the appropriate configuration information. You can also visit the -[selecting-a-date-source.md](docs/../selecting-a-data-source.md) guide for more +[selecting-a-date-source.md](./tutorial-extras/selecting-a-data-source.md) guide for more information on data sources options, and [data-sources.md](./architecture/data-sources.md) for detailed architecture decisions around integrating different data providers into the carbon aware SDK. @@ -110,7 +110,7 @@ the value that's applied. ### Configuration options -See [configuration.md](/docs/configuration.md) for details about how to +See [configuration.md](./tutorial-extras/configuration.md) for details about how to configure specific components of the application. #### Environment variables @@ -222,4 +222,4 @@ $ curl -s http://localhost:8080/emissions/forecasts/current?location=westus2 | j ``` For more information on containerization, refer to the markdown in -[containerization.md](./containerization.md). +[containerization.md](./tutorial-basics/containerization.md). diff --git a/casdk-docs/docs/packaging.md b/casdk-docs/docs/packaging.md deleted file mode 100644 index 725cd6df7..000000000 --- a/casdk-docs/docs/packaging.md +++ /dev/null @@ -1,209 +0,0 @@ - ---- ---- - -# Packaging the Carbon Aware SDK - -With the addition of the C# Client Library as a way to consume the Carbon Aware -SDK, we have also added [powershell scripts](../scripts/package/) to package the -library, and have included a sample [Console App](../samples/lib-integration/) -showing how the package can be consumed. - -- [Packaging the Carbon Aware SDK](#packaging-the-carbon-aware-sdk) - - [Included Projects](#included-projects) - - [Included Scripts](#included-scripts) - - [Running the packaging scripts](#running-the-packaging-scripts) - - [SDK Configuration](#sdk-configuration) - - [ElectricityMapsFree](#electricitymapsfree) - - [ElectricityMaps](#electricitymaps) - - [WattTime](#watttime) - - [Json](#json) - - [Use Package with Dependency Injection](#use-package-with-dependency-injection) - - [Console App Sample](#console-app-sample) - - [Run the Sample Console App](#run-the-sample-console-app) - -## Included Projects - -The current package include 8 projects from the SDK: - -1. "GSF.CarbonAware" -2. "CarbonAware" -3. "CarbonAware.DataSources.ElectricityMapsFree" -4. "CarbonAware.DataSources.ElectricityMaps" -5. "CarbonAware.DataSources.Json" -6. "CarbonAware.DataSources.Registration" -7. "CarbonAware.DataSources.WattTime" -8. "CarbonAware.LocationSources" - -These 8 projects enable users of the library to consume the current endpoints -exposed by the library. The package that needs to be added to a new C# project -is `GSF.CarbonAware`. - -## Included Scripts - -There are 2 scripts included to help the packaging process - -1. `create_packages.ps1 ` -2. `add_packages.ps1 ` - -The [`create_packages`](../scripts/package/create_packages.ps1) script is called -with 2 parameters: the CarbonAwareSDK dotnet solution file (`.sln`) path, and -the output directory destination for the package. The -[`add_packages`](../scripts/package/add_packages.ps1) script is also called with -2 parameters: the target project file (`.csproj`) path, and the package -destination path. - -To see a working example of both scripts being invoked, you can look at the -github action detailed in -[build-packages.yaml](../.github/workflows/build-packages.yaml). - -### Running the packaging scripts - -The packaging scripts can be run inside a VS Code dev container defined in this -project. When running in the dev container you will need: - -- [Docker Desktop](https://www.docker.com/products/docker-desktop/) -- [VSCode](https://code.visualstudio.com/) -- [Remote Containers extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) - -Alternatively you can run in your local environment using the -[.NET Core 6.0 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/6.0). - -## SDK Configuration - -The configuration needed to connect to WattTime, ElectricityMaps, -ElectricityMapsFree, or Json data sources can be managed using environment -variables or appsettings. -More information on data source configuration can be found -[here](https://github.com/Green-Software-Foundation/carbon-aware-sdk/blob/dev/docs/configuration.md#datasources) - -### ElectricityMapsFree - -Below are the environment variables needed to set up the -**ElectricityMapsFree** data source. - -```bash -export DataSources__EmissionsDataSource=ElectricityMapsFree -export DataSources__Configurations__ElectricityMapsFree__Type=ElectricityMapsFree -export DataSources__Configurations__ElectricityMapsFree__token=[ElectricityMapsFree APIToken]` -``` - -### ElectricityMaps - -Below are the environment variables needed to set up the -**ElectricityMaps** data source. - -```bash -export DataSources__ForecastDataSource=ElectricityMaps -export DataSources__Configurations__ElectricityMaps__Type=ElectricityMaps -export DataSources__Configurations__ElectricityMaps__APITokenHeader=[ElectricityMaps APITokenHeader] -export DataSources__Configurations__ElectricityMaps__APIToken=[ElectricityMaps APIToken]` -``` - -### WattTime - -Below are the environment variables needed to set up the -**WattTime** data source. - -```bash -export DataSources__EmissionsDataSource=WattTime` -export DataSources__ForecastDataSource=WattTime` -export DataSources__Configurations__WattTime__Type=WattTime` -export DataSources__Configurations__WattTime__Username=[WattTime Username]` -export DataSources__Configurations__WattTime__Password=[WattTime Password]` -export DataSources__Configurations__WattTime__BaseURL="https://api2.watttime.org/v2/"` -``` - -### Json - -Below is the environment variable needed to set up the -**Json** data source. - -```bash -export DataSources__EmissionsDataSource=Json` -export DataSources__Configurations__Json__Type=Json` -export DataSources__Configurations__Json__DataFileLocation="test-data-azure-emissions.json"` -``` - -## Use Package with Dependency Injection - -In order to get access to the -[handlers](./architecture/c%23-client-library.md#handlers) in the library, a -common practice with C# is through `Microsoft.Extensions.DependencyInjection` -extensions. This way the whole life cycle of the handler instance is managed by -the container’s framework, and it would help to isolate the concrete -implementation from the user facing interface. For instance, a consumer would be -able to call extensions as: - -```c# -// Using DI Services (Emissions) to register GSF SDK library -services.AddEmissionsServices(configuration); -``` - -```c# -// An application Consumer construct should inject a GSF handler like the following example -class ConsumerClass(IEmissionsHandler handler, ILogger logger) -{ - .... - this._handler = handler; - this._logger = logger; - .... -} -``` - -And the usage of a method for IEmissionsHandler - -```c# -async Task GetRating() -{ - ... - return await this._handler.GetAverageCarbonIntensity(…); -} -``` - -Another functionality of the application could just do Forecast data. So, it -would be a matter of following the same pattern: - -```c# -// Using DI Services (Forecast) to register GSF SDK library -services.AddForecastServices(configuration); -``` - -```c# -class ForecastApp(IForecastHandler handler) -{ - ... - this._handler = handler; -} -``` - -And the usage of a method for IForecastHandler: - -```c# -async Task GetOptimal(…) -{ - ... - return await this._handler.GetCurrentAsync()...).OptimalDataPoints.First(); -} -``` - -This way it would fit within the same stack as the rest of the SDK is -implemented. Also, it would be easier to integrate later when the current -consumers (CLI/WebApi) should be moved to use the library. - -## Console App Sample - -There is a sample console app in the -[lib integration folder](../samples/lib-integration/ConsoleApp/) to demonstrate -package creation and interaction with Carbon Aware SDK. - -### Run the Sample Console App - -In order to build and run the app, all the dependent packages need to be created -first and then imported in the app. Follow the steps below to run the sample -console app - - -- Run the [script commands](#included-scripts) to create the packages and add - them into the app. -- Create the [environment variables](#sdk-configuration) to connect to the - WattTime or Json data sources. diff --git a/casdk-docs/docs/quickstart.md b/casdk-docs/docs/quickstart.md index a3b68dfa7..5a78e0a69 100644 --- a/casdk-docs/docs/quickstart.md +++ b/casdk-docs/docs/quickstart.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 3 +--- + # Setting up and using the Carbon Aware SDK This guide will provide you with knowledge and examples necessary to use the diff --git a/casdk-docs/docs/tutorial-basics/_category_.json b/casdk-docs/docs/tutorial-basics/_category_.json index 2e6db55b1..7517a0bdb 100644 --- a/casdk-docs/docs/tutorial-basics/_category_.json +++ b/casdk-docs/docs/tutorial-basics/_category_.json @@ -1,6 +1,6 @@ { "label": "Tutorial - Basics", - "position": 2, + "position": 5, "link": { "type": "generated-index", "description": "5 minutes to learn the most important Docusaurus concepts." diff --git a/casdk-docs/docs/carbon-aware-cli.md b/casdk-docs/docs/tutorial-basics/carbon-aware-cli.md similarity index 100% rename from casdk-docs/docs/carbon-aware-cli.md rename to casdk-docs/docs/tutorial-basics/carbon-aware-cli.md diff --git a/casdk-docs/docs/carbon-aware-github-action.md b/casdk-docs/docs/tutorial-basics/carbon-aware-github-action.md similarity index 100% rename from casdk-docs/docs/carbon-aware-github-action.md rename to casdk-docs/docs/tutorial-basics/carbon-aware-github-action.md diff --git a/casdk-docs/docs/carbon-aware-tools.md b/casdk-docs/docs/tutorial-basics/carbon-aware-tools.md similarity index 100% rename from casdk-docs/docs/carbon-aware-tools.md rename to casdk-docs/docs/tutorial-basics/carbon-aware-tools.md diff --git a/casdk-docs/docs/carbon-aware-webapi.md b/casdk-docs/docs/tutorial-basics/carbon-aware-webapi.md similarity index 99% rename from casdk-docs/docs/carbon-aware-webapi.md rename to casdk-docs/docs/tutorial-basics/carbon-aware-webapi.md index e71f76d22..f4e579baf 100644 --- a/casdk-docs/docs/carbon-aware-webapi.md +++ b/casdk-docs/docs/tutorial-basics/carbon-aware-webapi.md @@ -475,7 +475,7 @@ object. Using the Exception Filter class enables the WebAPI to consistently respond with the `ValidationProblemDetails` error schema in all error cases and take advantage of error handling automatically provided by the framework. -![WebAPI Error Handling Flow Chart](./images/web-api-error-handling-flow.png) +![WebAPI Error Handling Flow Chart](../images/web-api-error-handling-flow.png) ## Autogenerate WebAPI @@ -529,7 +529,7 @@ WattTime as the data source provider. In this diagram, the _Client_ is a user of the SDK and the _WattTimeService_ is the [WattTime](https://www.wattime.org) API. -![webapi to watttime flow diagram](./images/webapi-swimlanes.png) +![webapi to watttime flow diagram](../images/webapi-swimlanes.png) ### ElectricityMaps diff --git a/casdk-docs/docs/tutorial-basics/congratulations.md b/casdk-docs/docs/tutorial-basics/congratulations.md deleted file mode 100644 index 04771a00b..000000000 --- a/casdk-docs/docs/tutorial-basics/congratulations.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_position: 6 ---- - -# Congratulations! - -You have just learned the **basics of Docusaurus** and made some changes to the **initial template**. - -Docusaurus has **much more to offer**! - -Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**. - -Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610) - -## What's next? - -- Read the [official documentation](https://docusaurus.io/) -- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config) -- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration) -- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout) -- Add a [search bar](https://docusaurus.io/docs/search) -- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase) -- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support) diff --git a/casdk-docs/docs/containerization.md b/casdk-docs/docs/tutorial-basics/containerization.md similarity index 100% rename from casdk-docs/docs/containerization.md rename to casdk-docs/docs/tutorial-basics/containerization.md diff --git a/casdk-docs/docs/tutorial-basics/create-a-blog-post.md b/casdk-docs/docs/tutorial-basics/create-a-blog-post.md deleted file mode 100644 index ea472bbaf..000000000 --- a/casdk-docs/docs/tutorial-basics/create-a-blog-post.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Create a Blog Post - -Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed... - -## Create your first Post - -Create a file at `blog/2021-02-28-greetings.md`: - -```md title="blog/2021-02-28-greetings.md" ---- -slug: greetings -title: Greetings! -authors: - - name: Joel Marcey - title: Co-creator of Docusaurus 1 - url: https://github.com/JoelMarcey - image_url: https://github.com/JoelMarcey.png - - name: Sébastien Lorber - title: Docusaurus maintainer - url: https://sebastienlorber.com - image_url: https://github.com/slorber.png -tags: [greetings] ---- - -Congratulations, you have made your first post! - -Feel free to play around and edit this post as much you like. -``` - -A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings). diff --git a/casdk-docs/docs/tutorial-basics/create-a-document.md b/casdk-docs/docs/tutorial-basics/create-a-document.md deleted file mode 100644 index ffddfa8eb..000000000 --- a/casdk-docs/docs/tutorial-basics/create-a-document.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Create a Document - -Documents are **groups of pages** connected through: - -- a **sidebar** -- **previous/next navigation** -- **versioning** - -## Create your first Doc - -Create a Markdown file at `docs/hello.md`: - -```md title="docs/hello.md" -# Hello - -This is my **first Docusaurus document**! -``` - -A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello). - -## Configure the Sidebar - -Docusaurus automatically **creates a sidebar** from the `docs` folder. - -Add metadata to customize the sidebar label and position: - -```md title="docs/hello.md" {1-4} ---- -sidebar_label: 'Hi!' -sidebar_position: 3 ---- - -# Hello - -This is my **first Docusaurus document**! -``` - -It is also possible to create your sidebar explicitly in `sidebars.js`: - -```js title="sidebars.js" -module.exports = { - tutorialSidebar: [ - 'intro', - // highlight-next-line - 'hello', - { - type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], - }, - ], -}; -``` diff --git a/casdk-docs/docs/tutorial-basics/create-a-page.md b/casdk-docs/docs/tutorial-basics/create-a-page.md deleted file mode 100644 index 20e2ac300..000000000 --- a/casdk-docs/docs/tutorial-basics/create-a-page.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Create a Page - -Add **Markdown or React** files to `src/pages` to create a **standalone page**: - -- `src/pages/index.js` → `localhost:3000/` -- `src/pages/foo.md` → `localhost:3000/foo` -- `src/pages/foo/bar.js` → `localhost:3000/foo/bar` - -## Create your first React Page - -Create a file at `src/pages/my-react-page.js`: - -```jsx title="src/pages/my-react-page.js" -import React from 'react'; -import Layout from '@theme/Layout'; - -export default function MyReactPage() { - return ( - -

My React page

-

This is a React page

-
- ); -} -``` - -A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page). - -## Create your first Markdown Page - -Create a file at `src/pages/my-markdown-page.md`: - -```mdx title="src/pages/my-markdown-page.md" -# My Markdown page - -This is a Markdown page -``` - -A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page). diff --git a/casdk-docs/docs/tutorial-basics/deploy-your-site.md b/casdk-docs/docs/tutorial-basics/deploy-your-site.md deleted file mode 100644 index 1c50ee063..000000000 --- a/casdk-docs/docs/tutorial-basics/deploy-your-site.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Deploy your site - -Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**). - -It builds your site as simple **static HTML, JavaScript and CSS files**. - -## Build your site - -Build your site **for production**: - -```bash -npm run build -``` - -The static files are generated in the `build` folder. - -## Deploy your site - -Test your production build locally: - -```bash -npm run serve -``` - -The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/). - -You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**). diff --git a/casdk-docs/docs/tutorial-basics/markdown-features.mdx b/casdk-docs/docs/tutorial-basics/markdown-features.mdx deleted file mode 100644 index 0337f34d6..000000000 --- a/casdk-docs/docs/tutorial-basics/markdown-features.mdx +++ /dev/null @@ -1,150 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Markdown Features - -Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**. - -## Front Matter - -Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/): - -```text title="my-doc.md" -// highlight-start ---- -id: my-doc-id -title: My document title -description: My document description -slug: /my-custom-url ---- -// highlight-end - -## Markdown heading - -Markdown text with [links](./hello.md) -``` - -## Links - -Regular Markdown links are supported, using url paths or relative file paths. - -```md -Let's see how to [Create a page](/create-a-page). -``` - -```md -Let's see how to [Create a page](./create-a-page.md). -``` - -**Result:** Let's see how to [Create a page](./create-a-page.md). - -## Images - -Regular Markdown images are supported. - -You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): - -```md -![Docusaurus logo](/img/docusaurus.png) -``` - -![Docusaurus logo](/img/docusaurus.png) - -You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them: - -```md -![Docusaurus logo](./img/docusaurus.png) -``` - -## Code Blocks - -Markdown code blocks are supported with Syntax highlighting. - - ```jsx title="src/components/HelloDocusaurus.js" - function HelloDocusaurus() { - return ( -

Hello, Docusaurus!

- ) - } - ``` - -```jsx title="src/components/HelloDocusaurus.js" -function HelloDocusaurus() { - return

Hello, Docusaurus!

; -} -``` - -## Admonitions - -Docusaurus has a special syntax to create admonitions and callouts: - - :::tip My tip - - Use this awesome feature option - - ::: - - :::danger Take care - - This action is dangerous - - ::: - -:::tip My tip - -Use this awesome feature option - -::: - -:::danger Take care - -This action is dangerous - -::: - -## MDX and React Components - -[MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**: - -```jsx -export const Highlight = ({children, color}) => ( - { - alert(`You clicked the color ${color} with label ${children}`) - }}> - {children} - -); - -This is Docusaurus green ! - -This is Facebook blue ! -``` - -export const Highlight = ({children, color}) => ( - { - alert(`You clicked the color ${color} with label ${children}`); - }}> - {children} - -); - -This is Docusaurus green ! - -This is Facebook blue ! diff --git a/casdk-docs/docs/tutorial-extras/_category_.json b/casdk-docs/docs/tutorial-extras/_category_.json index a8ffcc193..583bf88d3 100644 --- a/casdk-docs/docs/tutorial-extras/_category_.json +++ b/casdk-docs/docs/tutorial-extras/_category_.json @@ -1,6 +1,6 @@ { "label": "Tutorial - Extras", - "position": 3, + "position": 6, "link": { "type": "generated-index" } diff --git a/casdk-docs/docs/carbon-aware-library.md b/casdk-docs/docs/tutorial-extras/carbon-aware-library.md similarity index 99% rename from casdk-docs/docs/carbon-aware-library.md rename to casdk-docs/docs/tutorial-extras/carbon-aware-library.md index 9f920017a..b47813f3b 100644 --- a/casdk-docs/docs/carbon-aware-library.md +++ b/casdk-docs/docs/tutorial-extras/carbon-aware-library.md @@ -449,7 +449,7 @@ WattTime as the data source provider. In this diagram, the _Client_ is a user of the SDK and the _WattTimeService_ is the [WattTime](https://www.wattime.org) API. -![webapi to watttime flow diagram](./images/webapi-swimlanes.png) +![webapi to watttime flow diagram](../images/webapi-swimlanes.png) ### ElectricityMaps diff --git a/casdk-docs/docs/configuration.md b/casdk-docs/docs/tutorial-extras/configuration.md similarity index 100% rename from casdk-docs/docs/configuration.md rename to casdk-docs/docs/tutorial-extras/configuration.md diff --git a/casdk-docs/docs/tutorial-extras/img/docsVersionDropdown.png b/casdk-docs/docs/tutorial-extras/img/docsVersionDropdown.png deleted file mode 100644 index 97e4164618b5f8beda34cfa699720aba0ad2e342..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25427 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 diff --git a/casdk-docs/docs/tutorial-extras/img/localeDropdown.png b/casdk-docs/docs/tutorial-extras/img/localeDropdown.png deleted file mode 100644 index e257edc1f932985396bf59584c7ccfaddf955779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27841 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 JrC|B>e*nH7H{}2T diff --git a/casdk-docs/docs/linting.md b/casdk-docs/docs/tutorial-extras/linting.md similarity index 100% rename from casdk-docs/docs/linting.md rename to casdk-docs/docs/tutorial-extras/linting.md diff --git a/casdk-docs/docs/tutorial-extras/manage-docs-versions.md b/casdk-docs/docs/tutorial-extras/manage-docs-versions.md deleted file mode 100644 index e12c3f344..000000000 --- a/casdk-docs/docs/tutorial-extras/manage-docs-versions.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Manage Docs Versions - -Docusaurus can manage multiple versions of your docs. - -## Create a docs version - -Release a version 1.0 of your project: - -```bash -npm run docusaurus docs:version 1.0 -``` - -The `docs` folder is copied into `versioned_docs/version-1.0` and `versions.json` is created. - -Your docs now have 2 versions: - -- `1.0` at `http://localhost:3000/docs/` for the version 1.0 docs -- `current` at `http://localhost:3000/docs/next/` for the **upcoming, unreleased docs** - -## Add a Version Dropdown - -To navigate seamlessly across versions, add a version dropdown. - -Modify the `docusaurus.config.js` file: - -```js title="docusaurus.config.js" -module.exports = { - themeConfig: { - navbar: { - items: [ - // highlight-start - { - type: 'docsVersionDropdown', - }, - // highlight-end - ], - }, - }, -}; -``` - -The docs version dropdown appears in your navbar: - -![Docs Version Dropdown](./img/docsVersionDropdown.png) - -## Update an existing version - -It is possible to edit versioned docs in their respective folder: - -- `versioned_docs/version-1.0/hello.md` updates `http://localhost:3000/docs/hello` -- `docs/hello.md` updates `http://localhost:3000/docs/next/hello` diff --git a/casdk-docs/docs/tutorial-extras/packaging.md b/casdk-docs/docs/tutorial-extras/packaging.md new file mode 100644 index 000000000..70b43a300 --- /dev/null +++ b/casdk-docs/docs/tutorial-extras/packaging.md @@ -0,0 +1,209 @@ + + --- + --- + + # Packaging the Carbon Aware SDK + + With the addition of the C# Client Library as a way to consume the Carbon Aware + SDK, we have also added [powershell scripts](../scripts/package/) to package the + library, and have included a sample [Console App](../samples/lib-integration/) + showing how the package can be consumed. + + - [Packaging the Carbon Aware SDK](#packaging-the-carbon-aware-sdk) + - [Included Projects](#included-projects) + - [Included Scripts](#included-scripts) + - [Running the packaging scripts](#running-the-packaging-scripts) + - [SDK Configuration](#sdk-configuration) + - [ElectricityMapsFree](#electricitymapsfree) + - [ElectricityMaps](#electricitymaps) + - [WattTime](#watttime) + - [Json](#json) + - [Use Package with Dependency Injection](#use-package-with-dependency-injection) + - [Console App Sample](#console-app-sample) + - [Run the Sample Console App](#run-the-sample-console-app) + + ## Included Projects + + The current package include 8 projects from the SDK: + + 1. "GSF.CarbonAware" + 2. "CarbonAware" + 3. "CarbonAware.DataSources.ElectricityMapsFree" + 4. "CarbonAware.DataSources.ElectricityMaps" + 5. "CarbonAware.DataSources.Json" + 6. "CarbonAware.DataSources.Registration" + 7. "CarbonAware.DataSources.WattTime" + 8. "CarbonAware.LocationSources" + + These 8 projects enable users of the library to consume the current endpoints + exposed by the library. The package that needs to be added to a new C# project + is `GSF.CarbonAware`. + + ## Included Scripts + + There are 2 scripts included to help the packaging process + + 1. `create_packages.ps1 ` + 2. `add_packages.ps1 ` + + The [`create_packages`](../scripts/package/create_packages.ps1) script is called + with 2 parameters: the CarbonAwareSDK dotnet solution file (`.sln`) path, and + the output directory destination for the package. The + [`add_packages`](../scripts/package/add_packages.ps1) script is also called with + 2 parameters: the target project file (`.csproj`) path, and the package + destination path. + + To see a working example of both scripts being invoked, you can look at the + github action detailed in + [build-packages.yaml](../.github/workflows/build-packages.yaml). + + ### Running the packaging scripts + + The packaging scripts can be run inside a VS Code dev container defined in this + project. When running in the dev container you will need: + + - [Docker Desktop](https://www.docker.com/products/docker-desktop/) + - [VSCode](https://code.visualstudio.com/) + - [Remote Containers extension for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) + + Alternatively you can run in your local environment using the + [.NET Core 6.0 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/6.0). + + ## SDK Configuration + + The configuration needed to connect to WattTime, ElectricityMaps, + ElectricityMapsFree, or Json data sources can be managed using environment + variables or appsettings. + More information on data source configuration can be found + [here](configuration.md#datasources) + + ### ElectricityMapsFree + + Below are the environment variables needed to set up the + **ElectricityMapsFree** data source. + + ```bash + export DataSources__EmissionsDataSource=ElectricityMapsFree + export DataSources__Configurations__ElectricityMapsFree__Type=ElectricityMapsFree + export DataSources__Configurations__ElectricityMapsFree__token=[ElectricityMapsFree APIToken]` + ``` + + ### ElectricityMaps + + Below are the environment variables needed to set up the + **ElectricityMaps** data source. + + ```bash + export DataSources__ForecastDataSource=ElectricityMaps + export DataSources__Configurations__ElectricityMaps__Type=ElectricityMaps + export DataSources__Configurations__ElectricityMaps__APITokenHeader=[ElectricityMaps APITokenHeader] + export DataSources__Configurations__ElectricityMaps__APIToken=[ElectricityMaps APIToken]` + ``` + + ### WattTime + + Below are the environment variables needed to set up the + **WattTime** data source. + + ```bash + export DataSources__EmissionsDataSource=WattTime` + export DataSources__ForecastDataSource=WattTime` + export DataSources__Configurations__WattTime__Type=WattTime` + export DataSources__Configurations__WattTime__Username=[WattTime Username]` + export DataSources__Configurations__WattTime__Password=[WattTime Password]` + export DataSources__Configurations__WattTime__BaseURL="https://api2.watttime.org/v2/"` + ``` + + ### Json + + Below is the environment variable needed to set up the + **Json** data source. + + ```bash + export DataSources__EmissionsDataSource=Json` + export DataSources__Configurations__Json__Type=Json` + export DataSources__Configurations__Json__DataFileLocation="test-data-azure-emissions.json"` + ``` + + ## Use Package with Dependency Injection + + In order to get access to the + [handlers](../architecture/c-sharp-client-library.md#handlers) in the library, a + common practice with C# is through `Microsoft.Extensions.DependencyInjection` + extensions. This way the whole life cycle of the handler instance is managed by + the container’s framework, and it would help to isolate the concrete + implementation from the user facing interface. For instance, a consumer would be + able to call extensions as: + + ```c# + // Using DI Services (Emissions) to register GSF SDK library + services.AddEmissionsServices(configuration); + ``` + + ```c# + // An application Consumer construct should inject a GSF handler like the following example + class ConsumerClass(IEmissionsHandler handler, ILogger logger) + { + .... + this._handler = handler; + this._logger = logger; + .... + } + ``` + + And the usage of a method for IEmissionsHandler + + ```c# + async Task GetRating() + { + ... + return await this._handler.GetAverageCarbonIntensity(…); + } + ``` + + Another functionality of the application could just do Forecast data. So, it + would be a matter of following the same pattern: + + ```c# + // Using DI Services (Forecast) to register GSF SDK library + services.AddForecastServices(configuration); + ``` + + ```c# + class ForecastApp(IForecastHandler handler) + { + ... + this._handler = handler; + } + ``` + + And the usage of a method for IForecastHandler: + + ```c# + async Task GetOptimal(…) + { + ... + return await this._handler.GetCurrentAsync()...).OptimalDataPoints.First(); + } + ``` + + This way it would fit within the same stack as the rest of the SDK is + implemented. Also, it would be easier to integrate later when the current + consumers (CLI/WebApi) should be moved to use the library. + + ## Console App Sample + + There is a sample console app in the + [lib integration folder](../samples/lib-integration/ConsoleApp/) to demonstrate + package creation and interaction with Carbon Aware SDK. + + ### Run the Sample Console App + + In order to build and run the app, all the dependent packages need to be created + first and then imported in the app. Follow the steps below to run the sample + console app - + + - Run the [script commands](#included-scripts) to create the packages and add + them into the app. + - Create the [environment variables](#sdk-configuration) to connect to the + WattTime or Json data sources. diff --git a/casdk-docs/docs/selecting-a-data-source.md b/casdk-docs/docs/tutorial-extras/selecting-a-data-source.md similarity index 98% rename from casdk-docs/docs/selecting-a-data-source.md rename to casdk-docs/docs/tutorial-extras/selecting-a-data-source.md index d156830dd..150505a8c 100644 --- a/casdk-docs/docs/selecting-a-data-source.md +++ b/casdk-docs/docs/tutorial-extras/selecting-a-data-source.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 1 +--- + # Selecting a Data Source The Carbon Aware SDK includes access to various data sources of carbon aware @@ -59,7 +63,7 @@ location config. ElectricityMaps allows new users to create a free trial for 1 month access to the API. Free trial users have restricted access to the API and a slightly different configuration for the SDK (see -[configuration.md](./configuration.md#electricitymaps-configuration). You can +[configuration.md](../configuration.md#electricitymaps-configuration). You can request a free trial on the [ElectricityMaps API Portal](https://api-portal.electricitymaps.com/). diff --git a/casdk-docs/docs/tutorial-extras/translate-your-site.md b/casdk-docs/docs/tutorial-extras/translate-your-site.md deleted file mode 100644 index caeaffb05..000000000 --- a/casdk-docs/docs/tutorial-extras/translate-your-site.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Translate your site - -Let's translate `docs/intro.md` to French. - -## Configure i18n - -Modify `docusaurus.config.js` to add support for the `fr` locale: - -```js title="docusaurus.config.js" -module.exports = { - i18n: { - defaultLocale: 'en', - locales: ['en', 'fr'], - }, -}; -``` - -## Translate a doc - -Copy the `docs/intro.md` file to the `i18n/fr` folder: - -```bash -mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/ - -cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md -``` - -Translate `i18n/fr/docusaurus-plugin-content-docs/current/intro.md` in French. - -## Start your localized site - -Start your site on the French locale: - -```bash -npm run start -- --locale fr -``` - -Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated. - -:::caution - -In development, you can only use one locale at a same time. - -::: - -## Add a Locale Dropdown - -To navigate seamlessly across languages, add a locale dropdown. - -Modify the `docusaurus.config.js` file: - -```js title="docusaurus.config.js" -module.exports = { - themeConfig: { - navbar: { - items: [ - // highlight-start - { - type: 'localeDropdown', - }, - // highlight-end - ], - }, - }, -}; -``` - -The locale dropdown now appears in your navbar: - -![Locale Dropdown](./img/localeDropdown.png) - -## Build your localized site - -Build your site for a specific locale: - -```bash -npm run build -- --locale fr -``` - -Or build your site to include all the locales at once: - -```bash -npm run build -``` diff --git a/casdk-docs/docusaurus.config.js b/casdk-docs/docusaurus.config.js index f282be71a..44835857a 100644 --- a/casdk-docs/docusaurus.config.js +++ b/casdk-docs/docusaurus.config.js @@ -68,7 +68,7 @@ const config = { items: [ { type: 'doc', - docId: 'intro', + docId: 'quickstart', position: 'left', label: 'Tutorial', }, @@ -88,7 +88,7 @@ const config = { items: [ { label: 'Tutorial', - to: '/carbon-aware-sdk/docs/intro', + to: '/carbon-aware-sdk/docs/overview', }, ], }, From 48f117e7e9edc3f82be2e75418666c500d7994ac Mon Sep 17 00:00:00 2001 From: danuw Date: Tue, 22 Aug 2023 01:02:57 +0000 Subject: [PATCH 4/4] doc link fixes --- casdk-docs/docs/architecture/c-sharp-client-library.md | 2 +- casdk-docs/docs/architecture/decisions/0004-documentation.md | 2 +- casdk-docs/docs/architecture/overview.md | 5 +++++ casdk-docs/docs/tutorial-extras/linting.md | 2 +- casdk-docs/docs/tutorial-extras/selecting-a-data-source.md | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/casdk-docs/docs/architecture/c-sharp-client-library.md b/casdk-docs/docs/architecture/c-sharp-client-library.md index 6333ebc25..619d64217 100644 --- a/casdk-docs/docs/architecture/c-sharp-client-library.md +++ b/casdk-docs/docs/architecture/c-sharp-client-library.md @@ -2,7 +2,7 @@ sidebar_position: 4 --- -# C\# Client Library +# C# Client Library This document outlines the designs behind the GSF Carbon Aware C# Client Library. diff --git a/casdk-docs/docs/architecture/decisions/0004-documentation.md b/casdk-docs/docs/architecture/decisions/0004-documentation.md index ba0e7fef1..7d2e1397a 100644 --- a/casdk-docs/docs/architecture/decisions/0004-documentation.md +++ b/casdk-docs/docs/architecture/decisions/0004-documentation.md @@ -36,7 +36,7 @@ No documentation shall live outside the `root` or `/docs` directories. All other > ```markdown > # CarbonAware.WebApi > -> - [Getting started](/docs/carbon-aware-webapi.md) +> - [Getting started](../../tutorial-basics/carbon-aware-webapi.md) > - [Architecture](/docs/architecture/overview.md) > ``` diff --git a/casdk-docs/docs/architecture/overview.md b/casdk-docs/docs/architecture/overview.md index d01969621..3905dd203 100644 --- a/casdk-docs/docs/architecture/overview.md +++ b/casdk-docs/docs/architecture/overview.md @@ -1,3 +1,8 @@ +--- +sidebar_position: 1 +--- + + # Architecture Overview The Carbon Aware SDK is built with three tiers where each tier has its own set diff --git a/casdk-docs/docs/tutorial-extras/linting.md b/casdk-docs/docs/tutorial-extras/linting.md index 102819dab..742f62075 100644 --- a/casdk-docs/docs/tutorial-extras/linting.md +++ b/casdk-docs/docs/tutorial-extras/linting.md @@ -8,7 +8,7 @@ ## Markdown Linting -Per [ADR 0004](./architecture/decisions/0004-documentation.md), documentation +Per [ADR 0004](../architecture/decisions/0004-documentation.md), documentation will be linted using [markdownlint](https://github.com/DavidAnson/markdownlint/tree/main) to enforce file consistency for readers and authors. diff --git a/casdk-docs/docs/tutorial-extras/selecting-a-data-source.md b/casdk-docs/docs/tutorial-extras/selecting-a-data-source.md index 150505a8c..5d25823a0 100644 --- a/casdk-docs/docs/tutorial-extras/selecting-a-data-source.md +++ b/casdk-docs/docs/tutorial-extras/selecting-a-data-source.md @@ -63,7 +63,7 @@ location config. ElectricityMaps allows new users to create a free trial for 1 month access to the API. Free trial users have restricted access to the API and a slightly different configuration for the SDK (see -[configuration.md](../configuration.md#electricitymaps-configuration). You can +[configuration.md](../tutorial-extras/configuration.md#electricitymaps-configuration). You can request a free trial on the [ElectricityMaps API Portal](https://api-portal.electricitymaps.com/).